This is an automated email from the ASF dual-hosted git repository.

zhonghongsheng 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 152da00c6c1 Refactor RuleDefinitionException (#30718)
152da00c6c1 is described below

commit 152da00c6c175b5954b78028135af588880ea6b3
Author: Liang Zhang <[email protected]>
AuthorDate: Sun Mar 31 22:30:57 2024 +0800

    Refactor RuleDefinitionException (#30718)
    
    * Refactor DuplicateRuleException
    
    * Refactor MissingRequiredRuleException
    
    * Refactor InUsedRuleException
    
    * Refactor EmptyRuleException
    
    * Refactor MissingRequiredSingleTableException
    
    * Refactor DuplicateStorageUnitException
    
    * Refactor DuplicateStorageUnitException
---
 .../content/user-manual/error-code/sql-error-code.cn.md     | 13 +++++++------
 .../content/user-manual/error-code/sql-error-code.en.md     | 13 ++++++++-----
 .../handler/update/DropReadwriteSplittingRuleExecutor.java  |  4 ++--
 .../update/DropReadwriteSplittingRuleExecutorTest.java      |  4 ++--
 .../handler/update/DropShardingTableRuleExecutor.java       |  4 ++--
 .../distsql/update/DropShardingTableRuleExecutorTest.java   |  4 ++--
 .../infra/exception/rule/DuplicateRuleException.java        |  6 +++---
 ...RuleNotExistedException.java => EmptyRuleException.java} |  8 ++++----
 .../{RuleInUsedException.java => InUsedRuleException.java}  | 12 ++++++------
 .../infra/exception/rule/MissingRequiredRuleException.java  | 10 +++++-----
 .../AlterStorageUnitConnectionInfoException.java            |  2 +-
 ...onDefinition.java => DuplicateStorageUnitException.java} |  4 ++--
 .../exception/storageunit/StorageUnitsConnectException.java |  2 +-
 .../executor/rdl/resource/AlterStorageUnitExecutor.java     |  4 ++--
 .../executor/rdl/resource/RegisterStorageUnitExecutor.java  |  6 +++---
 .../executor/rdl/resource/AlterStorageUnitExecutorTest.java |  4 ++--
 .../rdl/resource/RegisterStorageUnitExecutorTest.java       |  8 ++++----
 .../exception/MissingRequiredSingleTableException.java      |  6 +++---
 .../proxy/backend/connector/DatabaseConnector.java          |  4 ++--
 .../proxy/backend/handler/distsql/rul/PreviewExecutor.java  |  4 ++--
 20 files changed, 63 insertions(+), 59 deletions(-)

diff --git a/docs/document/content/user-manual/error-code/sql-error-code.cn.md 
b/docs/document/content/user-manual/error-code/sql-error-code.cn.md
index 0177ef65c86..7feac46bb70 100644
--- a/docs/document/content/user-manual/error-code/sql-error-code.cn.md
+++ b/docs/document/content/user-manual/error-code/sql-error-code.cn.md
@@ -20,6 +20,7 @@ SQL 错误码以标准的 SQL State,Vendor Code 和详细错误信息提供,
 | HY000     | 10005       | Column '%s' in %s is ambiguous.                    
                            |
 | 42S02     | 10006       | Unknown column '%s' in '%s'.                       
                            |
 | 42S02     | 10007       | Table or view \`%s\` does not exist.               
                            |
+| 42S02     | 10008       | Missing required table '%s' in storage unit '%s'.  
                            |
 | 42000     | 10010       | Rule does not exist.                               
                            |
 | 42S02     | 10020       | Schema \`%s\` does not exist.                      
                            |
 | 42S02     | 10021       | Single table \`%s\` does not exist.                
                            |
@@ -31,14 +32,14 @@ SQL 错误码以标准的 SQL State,Vendor Code 和详细错误信息提供,
 | 44000     | 10102       | Storage units '%s' do not exist in database '%s'.  
                            |
 | 44000     | 10103       | Storage unit '%s' still used by '%s'.              
                            |
 | 42S01     | 10104       | Duplicate storage unit names '%s'.                 
                            |
-| 08000     | 10105       | Storage units can not connect, error messages are: 
%s.                         |
-| 0A000     | 10106       | Can not alter connection info in storage units: 
'%s'.                          |
+| 08000     | 10110       | Storage units can not connect, error messages are: 
%s.                         |
+| 0A000     | 10111       | Can not alter connection info in storage units: 
'%s'.                          |
 | 44000     | 10120       | Invalid storage unit status, error message is: %s. 
                            |
 | 44000     | 10200       | Invalid '%s' rule '%s', error message is: %s       
                            |
-| 44000     | 10201       | %s rules '%s' do not exist in database '%s'.       
                            |
-| 44000     | 10202       | %s rules '%s' in database '%s' are still in used.  
                            |
-| 44000     | 10205       | Duplicate %s rule names '%s' in database '%s'.     
                            |
-| 44000     | 10210       | There is no rule in database '%s'.                 
                            |
+| 42S02     | 10201       | There is no rule in database '%s'.                 
                            |
+| 42S02     | 10202       | %s rules '%s' do not exist in database '%s'.       
                            |
+| 44000     | 10203       | %s rules '%s' in database '%s' are still in used.  
                            |
+| 42S01     | 10204       | Duplicate %s rule names '%s' in database '%s'.     
                            |
 | 44000     | 10300       | Algorithm '%s.'%s' initialization failed, reason 
is: %s.                       |
 | 44000     | 10301       | '%s' algorithm on %s is required.                  
                            |
 | 42S02     | 10302       | '%s' algorithm '%s' on %s is unregistered.         
                            |
diff --git a/docs/document/content/user-manual/error-code/sql-error-code.en.md 
b/docs/document/content/user-manual/error-code/sql-error-code.en.md
index 1e59d9be03f..ca22a4e991c 100644
--- a/docs/document/content/user-manual/error-code/sql-error-code.en.md
+++ b/docs/document/content/user-manual/error-code/sql-error-code.en.md
@@ -20,6 +20,7 @@ SQL error codes provide by standard `SQL State`, `Vendor 
Code` and `Reason`, whi
 | HY000     | 10005       | Column '%s' in %s is ambiguous.                    
                            |
 | 42S02     | 10006       | Unknown column '%s' in '%s'.                       
                            |
 | 42S02     | 10007       | Table or view \`%s\` does not exist.               
                            |
+| 42S02     | 10008       | Missing required table '%s' in storage unit '%s'.  
                            |
 | 42000     | 10010       | Rule does not exist.                               
                            |
 | 42S02     | 10020       | Schema \`%s\` does not exist.                      
                            |
 | 42S02     | 10021       | Single table \`%s\` does not exist.                
                            |
@@ -31,13 +32,15 @@ SQL error codes provide by standard `SQL State`, `Vendor 
Code` and `Reason`, whi
 | 44000     | 10102       | Storage units '%s' do not exist in database '%s'.  
                            |
 | 44000     | 10103       | Storage unit '%s' still used by '%s'.              
                            |
 | 42S01     | 10104       | Duplicate storage unit names '%s'.                 
                            |
-| 08000     | 10105       | Storage units can not connect, error messages are: 
%s.                         |
-| 0A000     | 10106       | Can not alter connection info in storage units: 
'%s'.                          |
+| 08000     | 10110       | Storage units can not connect, error messages are: 
%s.                         |
+| 0A000     | 10111       | Can not alter connection info in storage units: 
'%s'.                          |
 | 44000     | 10120       | Invalid storage unit status, error message is: %s. 
                            |
 | 44000     | 10200       | Invalid '%s' rule '%s', error message is: %s       
                            |
-| 44000     | 10201       | %s rules '%s' do not exist in database '%s'.       
                            |
-| 44000     | 10202       | %s rules '%s' in database '%s' are still in used.  
                            |
-| 44000     | 10205       | Duplicate %s rule names '%s' in database '%s'.     
                            |
+| 44000     | 10200       | Invalid '%s' rule '%s', error message is: %s       
                            |
+| 42S02     | 10201       | There is no rule in database '%s'.                 
                            |
+| 42S02     | 10202       | %s rules '%s' do not exist in database '%s'.       
                            |
+| 44000     | 10203       | %s rules '%s' in database '%s' are still in used.  
                            |
+| 42S01     | 10204       | Duplicate %s rule names '%s' in database '%s'.     
                            |
 | 44000     | 10210       | There is no rule in database '%s'.                 
                            |
 | 44000     | 10300       | Algorithm '%s.'%s' initialization failed, reason 
is: %s.                       |
 | 44000     | 10301       | '%s' algorithm on %s is required.                  
                            |
diff --git 
a/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/DropReadwriteSplittingRuleExecutor.java
 
b/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/DropReadwriteSplittingRuleExecutor.java
index 53b59165dfc..fc5c2887a40 100644
--- 
a/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/DropReadwriteSplittingRuleExecutor.java
+++ 
b/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/DropReadwriteSplittingRuleExecutor.java
@@ -20,7 +20,7 @@ package 
org.apache.shardingsphere.readwritesplitting.distsql.handler.update;
 import lombok.Setter;
 import 
org.apache.shardingsphere.distsql.handler.engine.update.rdl.rule.spi.database.DatabaseRuleDropExecutor;
 import 
org.apache.shardingsphere.infra.exception.rule.MissingRequiredRuleException;
-import org.apache.shardingsphere.infra.exception.rule.RuleInUsedException;
+import org.apache.shardingsphere.infra.exception.rule.InUsedRuleException;
 import 
org.apache.shardingsphere.distsql.handler.required.DistSQLExecutorCurrentRuleRequired;
 import 
org.apache.shardingsphere.infra.algorithm.core.config.AlgorithmConfiguration;
 import org.apache.shardingsphere.infra.datanode.DataNode;
@@ -72,7 +72,7 @@ public final class DropReadwriteSplittingRuleExecutor 
implements DatabaseRuleDro
     private void checkToBeDroppedInUsed(final 
DropReadwriteSplittingRuleStatement sqlStatement) {
         Collection<String> resourceBeUsed = getInUsedResources();
         Collection<String> ruleInUsed = 
sqlStatement.getNames().stream().filter(resourceBeUsed::contains).collect(Collectors.toSet());
-        ShardingSpherePreconditions.checkState(ruleInUsed.isEmpty(), () -> new 
RuleInUsedException("Readwrite-splitting", database.getName(), ruleInUsed));
+        ShardingSpherePreconditions.checkState(ruleInUsed.isEmpty(), () -> new 
InUsedRuleException("Readwrite-splitting", database.getName(), ruleInUsed));
     }
     
     private Collection<String> getInUsedResources() {
diff --git 
a/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/DropReadwriteSplittingRuleExecutorTest.java
 
b/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/DropReadwriteSplittingRuleExecutorTest.java
index 05d8b93e1a9..996288d6643 100644
--- 
a/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/DropReadwriteSplittingRuleExecutorTest.java
+++ 
b/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/DropReadwriteSplittingRuleExecutorTest.java
@@ -21,7 +21,7 @@ import 
org.apache.shardingsphere.infra.algorithm.core.config.AlgorithmConfigurat
 import org.apache.shardingsphere.infra.datanode.DataNode;
 import 
org.apache.shardingsphere.infra.exception.core.external.sql.type.kernel.category.RuleDefinitionException;
 import 
org.apache.shardingsphere.infra.exception.rule.MissingRequiredRuleException;
-import org.apache.shardingsphere.infra.exception.rule.RuleInUsedException;
+import org.apache.shardingsphere.infra.exception.rule.InUsedRuleException;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.rule.attribute.RuleAttributes;
 import 
org.apache.shardingsphere.infra.rule.attribute.datanode.DataNodeRuleAttribute;
@@ -88,7 +88,7 @@ class DropReadwriteSplittingRuleExecutorTest {
         executor.setDatabase(database);
         
when(rule.getConfiguration()).thenReturn(createCurrentRuleConfiguration());
         executor.setRule(rule);
-        assertThrows(RuleInUsedException.class, () -> 
executor.checkBeforeUpdate(createSQLStatement()));
+        assertThrows(InUsedRuleException.class, () -> 
executor.checkBeforeUpdate(createSQLStatement()));
     }
     
     @Test
diff --git 
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingTableRuleExecutor.java
 
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingTableRuleExecutor.java
index d880c6012fb..28126d82a58 100644
--- 
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingTableRuleExecutor.java
+++ 
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingTableRuleExecutor.java
@@ -22,7 +22,7 @@ import com.google.common.base.Splitter;
 import lombok.Setter;
 import 
org.apache.shardingsphere.distsql.handler.engine.update.rdl.rule.spi.database.DatabaseRuleDropExecutor;
 import 
org.apache.shardingsphere.infra.exception.rule.MissingRequiredRuleException;
-import org.apache.shardingsphere.infra.exception.rule.RuleInUsedException;
+import org.apache.shardingsphere.infra.exception.rule.InUsedRuleException;
 import 
org.apache.shardingsphere.distsql.handler.required.DistSQLExecutorCurrentRuleRequired;
 import 
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
@@ -79,7 +79,7 @@ public final class DropShardingTableRuleExecutor implements 
DatabaseRuleDropExec
         Collection<String> bindingTables = getBindingTables();
         Collection<String> usedTableNames = 
getToBeDroppedShardingTableNames(sqlStatement).stream().filter(bindingTables::contains).collect(Collectors.toList());
         if (!usedTableNames.isEmpty()) {
-            throw new RuleInUsedException("Sharding", database.getName(), 
usedTableNames, "sharding table reference");
+            throw new InUsedRuleException("Sharding", database.getName(), 
usedTableNames, "sharding table reference");
         }
     }
     
diff --git 
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/DropShardingTableRuleExecutorTest.java
 
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/DropShardingTableRuleExecutorTest.java
index 15d757af95c..41a0a7edba6 100644
--- 
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/DropShardingTableRuleExecutorTest.java
+++ 
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/DropShardingTableRuleExecutorTest.java
@@ -20,7 +20,7 @@ package org.apache.shardingsphere.sharding.distsql.update;
 import com.google.common.base.Splitter;
 import 
org.apache.shardingsphere.infra.exception.core.external.sql.type.kernel.category.RuleDefinitionException;
 import 
org.apache.shardingsphere.infra.exception.rule.MissingRequiredRuleException;
-import org.apache.shardingsphere.infra.exception.rule.RuleInUsedException;
+import org.apache.shardingsphere.infra.exception.rule.InUsedRuleException;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
 import 
org.apache.shardingsphere.sharding.api.config.rule.ShardingAutoTableRuleConfiguration;
@@ -83,7 +83,7 @@ class DropShardingTableRuleExecutorTest {
         ShardingRule rule = mock(ShardingRule.class);
         
when(rule.getConfiguration()).thenReturn(createCurrentRuleConfiguration());
         executor.setRule(rule);
-        assertThrows(RuleInUsedException.class, () -> 
executor.checkBeforeUpdate(createSQLStatement("t_order_item")));
+        assertThrows(InUsedRuleException.class, () -> 
executor.checkBeforeUpdate(createSQLStatement("t_order_item")));
     }
     
     @Test
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/rule/DuplicateRuleException.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/rule/DuplicateRuleException.java
index dc89551c2a8..eb2211441e0 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/rule/DuplicateRuleException.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/rule/DuplicateRuleException.java
@@ -30,14 +30,14 @@ public final class DuplicateRuleException extends 
RuleDefinitionException {
     private static final long serialVersionUID = -1738699538105858939L;
     
     public DuplicateRuleException(final String ruleType, final String 
databaseName, final Collection<String> ruleNames) {
-        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 5, 
String.format("Duplicate %s rule names '%s' in database '%s'.", ruleType, 
ruleNames, databaseName));
+        super(XOpenSQLState.DUPLICATE, 4, String.format("Duplicate %s rule 
names '%s' in database '%s'.", ruleType, ruleNames, databaseName));
     }
     
     public DuplicateRuleException(final String ruleType, final 
Collection<String> ruleNames) {
-        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 5, 
String.format("Duplicate %s rule names '%s'.", ruleType, ruleNames));
+        super(XOpenSQLState.DUPLICATE, 4, String.format("Duplicate %s rule 
names '%s'.", ruleType, ruleNames));
     }
     
     public DuplicateRuleException(final String type, final String 
databaseName) {
-        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 5, 
String.format("Duplicate '%s' in database '%s'.", type, databaseName));
+        super(XOpenSQLState.DUPLICATE, 4, String.format("Duplicate '%s' in 
database '%s'.", type, databaseName));
     }
 }
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/rule/RuleNotExistedException.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/rule/EmptyRuleException.java
similarity index 80%
rename from 
infra/common/src/main/java/org/apache/shardingsphere/infra/exception/rule/RuleNotExistedException.java
rename to 
infra/common/src/main/java/org/apache/shardingsphere/infra/exception/rule/EmptyRuleException.java
index 8d5d6a5543c..1b4a9b54c7d 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/rule/RuleNotExistedException.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/rule/EmptyRuleException.java
@@ -21,13 +21,13 @@ import 
org.apache.shardingsphere.infra.exception.core.external.sql.sqlstate.XOpe
 import 
org.apache.shardingsphere.infra.exception.core.external.sql.type.kernel.category.RuleDefinitionException;
 
 /**
- * Rule does not exist exception.
+ * Empty rule unit exception.
  */
-public final class RuleNotExistedException extends RuleDefinitionException {
+public final class EmptyRuleException extends RuleDefinitionException {
     
     private static final long serialVersionUID = -4150905802300104824L;
     
-    public RuleNotExistedException(final String databaseName) {
-        super(XOpenSQLState.SYNTAX_ERROR, 10, "There is no rule in database 
'%s'.", databaseName);
+    public EmptyRuleException(final String databaseName) {
+        super(XOpenSQLState.NOT_FOUND, 1, "There is no rule in database 
'%s'.", databaseName);
     }
 }
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/rule/RuleInUsedException.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/rule/InUsedRuleException.java
similarity index 81%
rename from 
infra/common/src/main/java/org/apache/shardingsphere/infra/exception/rule/RuleInUsedException.java
rename to 
infra/common/src/main/java/org/apache/shardingsphere/infra/exception/rule/InUsedRuleException.java
index 804942f60ed..8862e2a10ca 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/rule/RuleInUsedException.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/rule/InUsedRuleException.java
@@ -23,17 +23,17 @@ import 
org.apache.shardingsphere.infra.exception.core.external.sql.type.kernel.c
 import java.util.Collection;
 
 /**
- * Rule in used exception.
+ * In used rule exception.
  */
-public final class RuleInUsedException extends RuleDefinitionException {
+public final class InUsedRuleException extends RuleDefinitionException {
     
     private static final long serialVersionUID = 3308787279125477660L;
     
-    public RuleInUsedException(final String ruleType, final String 
databaseName, final Collection<String> ruleNames) {
-        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 2, "%s rules '%s' in 
database '%s' are still in used.", ruleType, ruleNames, databaseName);
+    public InUsedRuleException(final String ruleType, final String 
databaseName, final Collection<String> ruleNames) {
+        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 3, "%s rules '%s' in 
database '%s' are still in used.", ruleType, ruleNames, databaseName);
     }
     
-    public RuleInUsedException(final String ruleType, final String 
databaseName, final Collection<String> ruleNames, final String usingType) {
-        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 2, "%s rules '%s' in 
database '%s' are still in used by %s.", ruleType, ruleNames, databaseName, 
usingType);
+    public InUsedRuleException(final String ruleType, final String 
databaseName, final Collection<String> ruleNames, final String usingType) {
+        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 3, "%s rules '%s' in 
database '%s' are still in used by %s.", ruleType, ruleNames, databaseName, 
usingType);
     }
 }
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/rule/MissingRequiredRuleException.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/rule/MissingRequiredRuleException.java
index b1ac637ffa7..bda267b5094 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/rule/MissingRequiredRuleException.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/rule/MissingRequiredRuleException.java
@@ -30,22 +30,22 @@ public final class MissingRequiredRuleException extends 
RuleDefinitionException
     private static final long serialVersionUID = -8464574460917965546L;
     
     public MissingRequiredRuleException(final String ruleType) {
-        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 1, "%s rule does not 
exist.", ruleType);
+        super(XOpenSQLState.NOT_FOUND, 2, "%s rule does not exist.", ruleType);
     }
     
     public MissingRequiredRuleException(final String ruleType, final String 
databaseName) {
-        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 1, "%s rule does not exist 
in database '%s'.", ruleType, databaseName);
+        super(XOpenSQLState.NOT_FOUND, 2, "%s rule does not exist in database 
'%s'.", ruleType, databaseName);
     }
     
     public MissingRequiredRuleException(final String ruleType, final 
Collection<String> ruleNames) {
-        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 1, "%s rules '%s' do not 
exist.", ruleType, ruleNames);
+        super(XOpenSQLState.NOT_FOUND, 2, "%s rules '%s' do not exist.", 
ruleType, ruleNames);
     }
     
     public MissingRequiredRuleException(final String ruleType, final String 
databaseName, final String ruleName) {
-        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 1, "%s rule '%s' do not 
exist in database '%s'.", ruleType, ruleName, databaseName);
+        super(XOpenSQLState.NOT_FOUND, 2, "%s rule '%s' do not exist in 
database '%s'.", ruleType, ruleName, databaseName);
     }
     
     public MissingRequiredRuleException(final String ruleType, final String 
databaseName, final Collection<String> ruleNames) {
-        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 1, "%s rules '%s' do not 
exist in database '%s'.", ruleType, ruleNames, databaseName);
+        super(XOpenSQLState.NOT_FOUND, 1, "%s rules '%s' do not exist in 
database '%s'.", ruleType, ruleNames, databaseName);
     }
 }
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/storageunit/AlterStorageUnitConnectionInfoException.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/storageunit/AlterStorageUnitConnectionInfoException.java
index a436a472512..4414abe8269 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/storageunit/AlterStorageUnitConnectionInfoException.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/storageunit/AlterStorageUnitConnectionInfoException.java
@@ -30,6 +30,6 @@ public final class AlterStorageUnitConnectionInfoException 
extends ResourceDefin
     private static final long serialVersionUID = 525999625052706626L;
     
     public AlterStorageUnitConnectionInfoException(final Collection<String> 
storageUnitNames) {
-        super(XOpenSQLState.FEATURE_NOT_SUPPORTED, 6, "Can not alter 
connection info in storage units: '%s'.", String.join(", ", storageUnitNames));
+        super(XOpenSQLState.FEATURE_NOT_SUPPORTED, 11, "Can not alter 
connection info in storage units: '%s'.", String.join(", ", storageUnitNames));
     }
 }
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/storageunit/DuplicateStorageUnitExceptionDefinition.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/storageunit/DuplicateStorageUnitException.java
similarity index 87%
rename from 
infra/common/src/main/java/org/apache/shardingsphere/infra/exception/storageunit/DuplicateStorageUnitExceptionDefinition.java
rename to 
infra/common/src/main/java/org/apache/shardingsphere/infra/exception/storageunit/DuplicateStorageUnitException.java
index 39ba29e8342..66e10013bf7 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/storageunit/DuplicateStorageUnitExceptionDefinition.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/storageunit/DuplicateStorageUnitException.java
@@ -25,11 +25,11 @@ import java.util.Collection;
 /**
  * Duplicate storage unit exception.
  */
-public final class DuplicateStorageUnitExceptionDefinition extends 
ResourceDefinitionException {
+public final class DuplicateStorageUnitException extends 
ResourceDefinitionException {
     
     private static final long serialVersionUID = 2103793827572264148L;
     
-    public DuplicateStorageUnitExceptionDefinition(final Collection<String> 
storageUnitNames) {
+    public DuplicateStorageUnitException(final Collection<String> 
storageUnitNames) {
         super(XOpenSQLState.DUPLICATE, 4, "Duplicate storage unit names 
'%s'.", String.join(", ", storageUnitNames));
     }
 }
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/storageunit/StorageUnitsConnectException.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/storageunit/StorageUnitsConnectException.java
index b7507c1473b..72e851f551f 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/storageunit/StorageUnitsConnectException.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/storageunit/StorageUnitsConnectException.java
@@ -31,7 +31,7 @@ public final class StorageUnitsConnectException extends 
ResourceDefinitionExcept
     private static final long serialVersionUID = 1824912697040264268L;
     
     public StorageUnitsConnectException(final Map<String, Exception> causes) {
-        super(XOpenSQLState.CONNECTION_EXCEPTION, 5, "Storage units can not 
connect, error messages are: %s.", causes.entrySet().stream().map(entry -> 
String.format(
+        super(XOpenSQLState.CONNECTION_EXCEPTION, 10, "Storage units can not 
connect, error messages are: %s.", causes.entrySet().stream().map(entry -> 
String.format(
                 "Storage unit name: '%s', error message is: %s", 
entry.getKey(), 
entry.getValue().getMessage())).collect(Collectors.joining(System.lineSeparator())));
     }
 }
diff --git 
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/AlterStorageUnitExecutor.java
 
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/AlterStorageUnitExecutor.java
index 8f881c0b91b..ec7d7650b25 100644
--- 
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/AlterStorageUnitExecutor.java
+++ 
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/AlterStorageUnitExecutor.java
@@ -34,7 +34,7 @@ import 
org.apache.shardingsphere.infra.datasource.pool.props.domain.DataSourcePo
 import 
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
 import 
org.apache.shardingsphere.infra.exception.core.external.ShardingSphereExternalException;
 import 
org.apache.shardingsphere.infra.exception.storageunit.AlterStorageUnitConnectionInfoException;
-import 
org.apache.shardingsphere.infra.exception.storageunit.DuplicateStorageUnitExceptionDefinition;
+import 
org.apache.shardingsphere.infra.exception.storageunit.DuplicateStorageUnitException;
 import 
org.apache.shardingsphere.infra.exception.storageunit.StorageUnitsOperateException;
 import 
org.apache.shardingsphere.infra.exception.storageunit.MissingRequiredStorageUnitsException;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
@@ -80,7 +80,7 @@ public final class AlterStorageUnitExecutor implements 
DistSQLUpdateExecutor<Alt
     
     private void checkDuplicatedStorageUnitNames(final Collection<String> 
storageUnitNames) {
         Collection<String> duplicatedStorageUnitNames = 
storageUnitNames.stream().filter(each -> 
storageUnitNames.stream().filter(each::equals).count() > 
1).collect(Collectors.toList());
-        
ShardingSpherePreconditions.checkState(duplicatedStorageUnitNames.isEmpty(), () 
-> new DuplicateStorageUnitExceptionDefinition(duplicatedStorageUnitNames));
+        
ShardingSpherePreconditions.checkState(duplicatedStorageUnitNames.isEmpty(), () 
-> new DuplicateStorageUnitException(duplicatedStorageUnitNames));
     }
     
     private void checkStorageUnitNameExisted(final Collection<String> 
storageUnitNames) {
diff --git 
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/RegisterStorageUnitExecutor.java
 
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/RegisterStorageUnitExecutor.java
index cf8e568fdcc..09b8d65bece 100644
--- 
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/RegisterStorageUnitExecutor.java
+++ 
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/RegisterStorageUnitExecutor.java
@@ -28,7 +28,7 @@ import 
org.apache.shardingsphere.distsql.statement.rdl.resource.unit.type.Regist
 import 
org.apache.shardingsphere.infra.datasource.pool.props.domain.DataSourcePoolProperties;
 import 
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
 import 
org.apache.shardingsphere.infra.exception.core.external.ShardingSphereExternalException;
-import 
org.apache.shardingsphere.infra.exception.storageunit.DuplicateStorageUnitExceptionDefinition;
+import 
org.apache.shardingsphere.infra.exception.storageunit.DuplicateStorageUnitException;
 import 
org.apache.shardingsphere.infra.exception.storageunit.StorageUnitsOperateException;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.rule.attribute.datasource.DataSourceMapperRuleAttribute;
@@ -89,7 +89,7 @@ public final class RegisterStorageUnitExecutor implements 
DistSQLUpdateExecutor<
             }
             dataSourceNames.add(each.getName());
         }
-        
ShardingSpherePreconditions.checkState(duplicatedDataSourceNames.isEmpty(), () 
-> new DuplicateStorageUnitExceptionDefinition(duplicatedDataSourceNames));
+        
ShardingSpherePreconditions.checkState(duplicatedDataSourceNames.isEmpty(), () 
-> new DuplicateStorageUnitException(duplicatedDataSourceNames));
     }
     
     private void checkDuplicatedLogicalDataSourceNames(final 
Collection<String> requiredDataSourceNames) {
@@ -98,7 +98,7 @@ public final class RegisterStorageUnitExecutor implements 
DistSQLUpdateExecutor<
             return;
         }
         Collection<String> duplicatedDataSourceNames = 
requiredDataSourceNames.stream().filter(logicalDataSourceNames::contains).collect(Collectors.toSet());
-        
ShardingSpherePreconditions.checkState(duplicatedDataSourceNames.isEmpty(), () 
-> new DuplicateStorageUnitExceptionDefinition(duplicatedDataSourceNames));
+        
ShardingSpherePreconditions.checkState(duplicatedDataSourceNames.isEmpty(), () 
-> new DuplicateStorageUnitException(duplicatedDataSourceNames));
     }
     
     private Collection<String> getCurrentStorageUnitNames(final ContextManager 
contextManager) {
diff --git 
a/infra/distsql-handler/src/test/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/AlterStorageUnitExecutorTest.java
 
b/infra/distsql-handler/src/test/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/AlterStorageUnitExecutorTest.java
index 9064965753d..7bc32bc10c7 100644
--- 
a/infra/distsql-handler/src/test/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/AlterStorageUnitExecutorTest.java
+++ 
b/infra/distsql-handler/src/test/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/AlterStorageUnitExecutorTest.java
@@ -23,7 +23,7 @@ import 
org.apache.shardingsphere.distsql.segment.URLBasedDataSourceSegment;
 import 
org.apache.shardingsphere.distsql.statement.rdl.resource.unit.type.AlterStorageUnitStatement;
 import 
org.apache.shardingsphere.infra.database.core.connector.ConnectionProperties;
 import 
org.apache.shardingsphere.infra.exception.storageunit.AlterStorageUnitConnectionInfoException;
-import 
org.apache.shardingsphere.infra.exception.storageunit.DuplicateStorageUnitExceptionDefinition;
+import 
org.apache.shardingsphere.infra.exception.storageunit.DuplicateStorageUnitException;
 import 
org.apache.shardingsphere.infra.exception.storageunit.MissingRequiredStorageUnitsException;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.ResourceMetaData;
@@ -75,7 +75,7 @@ class AlterStorageUnitExecutorTest {
     
     @Test
     void assertExecuteUpdateWithDuplicateStorageUnitNames() {
-        assertThrows(DuplicateStorageUnitExceptionDefinition.class, () -> 
executor.executeUpdate(createAlterStorageUnitStatementWithDuplicateStorageUnitNames(),
 mock(ContextManager.class)));
+        assertThrows(DuplicateStorageUnitException.class, () -> 
executor.executeUpdate(createAlterStorageUnitStatementWithDuplicateStorageUnitNames(),
 mock(ContextManager.class)));
     }
     
     @Test
diff --git 
a/infra/distsql-handler/src/test/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/RegisterStorageUnitExecutorTest.java
 
b/infra/distsql-handler/src/test/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/RegisterStorageUnitExecutorTest.java
index 666f8e2f92a..e0900a347b4 100644
--- 
a/infra/distsql-handler/src/test/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/RegisterStorageUnitExecutorTest.java
+++ 
b/infra/distsql-handler/src/test/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/RegisterStorageUnitExecutorTest.java
@@ -21,7 +21,7 @@ import 
org.apache.shardingsphere.distsql.handler.validate.DistSQLDataSourcePoolP
 import 
org.apache.shardingsphere.distsql.segment.HostnameAndPortBasedDataSourceSegment;
 import org.apache.shardingsphere.distsql.segment.URLBasedDataSourceSegment;
 import 
org.apache.shardingsphere.distsql.statement.rdl.resource.unit.type.RegisterStorageUnitStatement;
-import 
org.apache.shardingsphere.infra.exception.storageunit.DuplicateStorageUnitExceptionDefinition;
+import 
org.apache.shardingsphere.infra.exception.storageunit.DuplicateStorageUnitException;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
 import 
org.apache.shardingsphere.infra.rule.attribute.datasource.DataSourceMapperRuleAttribute;
@@ -70,14 +70,14 @@ class RegisterStorageUnitExecutorTest {
     
     @Test
     void assertExecuteUpdateWithDuplicateStorageUnitNamesInStatement() {
-        assertThrows(DuplicateStorageUnitExceptionDefinition.class, () -> 
executor.executeUpdate(createRegisterStorageUnitStatementWithDuplicateStorageUnitNames(),
 mock(ContextManager.class)));
+        assertThrows(DuplicateStorageUnitException.class, () -> 
executor.executeUpdate(createRegisterStorageUnitStatementWithDuplicateStorageUnitNames(),
 mock(ContextManager.class)));
     }
     
     @Test
     void 
assertExecuteUpdateWithDuplicateStorageUnitNamesWithResourceMetaData() {
         ContextManager contextManager = mock(ContextManager.class, 
RETURNS_DEEP_STUBS);
         
when(contextManager.getStorageUnits("foo_db").keySet()).thenReturn(Collections.singleton("ds_0"));
-        assertThrows(DuplicateStorageUnitExceptionDefinition.class, () -> 
executor.executeUpdate(createRegisterStorageUnitStatement(), contextManager));
+        assertThrows(DuplicateStorageUnitException.class, () -> 
executor.executeUpdate(createRegisterStorageUnitStatement(), contextManager));
     }
     
     @Test
@@ -87,7 +87,7 @@ class RegisterStorageUnitExecutorTest {
         DataSourceMapperRuleAttribute ruleAttribute = 
mock(DataSourceMapperRuleAttribute.class);
         
when(ruleAttribute.getDataSourceMapper()).thenReturn(Collections.singletonMap("ds_0",
 Collections.emptyList()));
         
when(database.getRuleMetaData().getAttributes(DataSourceMapperRuleAttribute.class)).thenReturn(Collections.singleton(ruleAttribute));
-        assertThrows(DuplicateStorageUnitExceptionDefinition.class, () -> 
executor.executeUpdate(createRegisterStorageUnitStatement(), contextManager));
+        assertThrows(DuplicateStorageUnitException.class, () -> 
executor.executeUpdate(createRegisterStorageUnitStatement(), contextManager));
     }
     
     private RegisterStorageUnitStatement createRegisterStorageUnitStatement() {
diff --git 
a/kernel/single/distsql/handler/src/main/java/org/apache/shardingsphere/single/distsql/handler/exception/MissingRequiredSingleTableException.java
 
b/kernel/single/distsql/handler/src/main/java/org/apache/shardingsphere/single/distsql/handler/exception/MissingRequiredSingleTableException.java
index 97d167e40ce..425e8bd6686 100644
--- 
a/kernel/single/distsql/handler/src/main/java/org/apache/shardingsphere/single/distsql/handler/exception/MissingRequiredSingleTableException.java
+++ 
b/kernel/single/distsql/handler/src/main/java/org/apache/shardingsphere/single/distsql/handler/exception/MissingRequiredSingleTableException.java
@@ -18,16 +18,16 @@
 package org.apache.shardingsphere.single.distsql.handler.exception;
 
 import 
org.apache.shardingsphere.infra.exception.core.external.sql.sqlstate.XOpenSQLState;
-import 
org.apache.shardingsphere.infra.exception.core.external.sql.type.kernel.category.RuleDefinitionException;
+import 
org.apache.shardingsphere.infra.exception.core.external.sql.type.kernel.category.MetaDataSQLException;
 
 /**
  * Missing required single table exception.
  */
-public final class MissingRequiredSingleTableException extends 
RuleDefinitionException {
+public final class MissingRequiredSingleTableException extends 
MetaDataSQLException {
     
     private static final long serialVersionUID = 3155006580453893122L;
     
     public MissingRequiredSingleTableException(final String storageUnitName, 
final String tableName) {
-        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 6, "Missing required table 
'%s' in storage unit '%s'.", tableName, storageUnitName);
+        super(XOpenSQLState.NOT_FOUND, 8, "Missing required table '%s' in 
storage unit '%s'.", tableName, storageUnitName);
     }
 }
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/DatabaseConnector.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/DatabaseConnector.java
index d1b6c6405ff..59f752acb42 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/DatabaseConnector.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/DatabaseConnector.java
@@ -32,7 +32,7 @@ import 
org.apache.shardingsphere.infra.connection.refresher.MetaDataRefreshEngin
 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
 import 
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
 import 
org.apache.shardingsphere.infra.exception.dialect.SQLExceptionTransformEngine;
-import org.apache.shardingsphere.infra.exception.rule.RuleNotExistedException;
+import org.apache.shardingsphere.infra.exception.rule.EmptyRuleException;
 import 
org.apache.shardingsphere.infra.exception.storageunit.EmptyStorageUnitException;
 import org.apache.shardingsphere.infra.executor.sql.context.ExecutionContext;
 import 
org.apache.shardingsphere.infra.executor.sql.execute.engine.SQLExecutorExceptionHandler;
@@ -132,7 +132,7 @@ public final class DatabaseConnector implements 
DatabaseBackendHandler {
         boolean isSystemSchema = 
SystemSchemaUtils.containsSystemSchema(sqlStatementContext.getDatabaseType(), 
sqlStatementContext.getTablesContext().getSchemaNames(), database);
         ShardingSpherePreconditions.checkState(isSystemSchema || 
database.containsDataSource(), () -> new 
EmptyStorageUnitException(connectionSession.getDatabaseName()));
         if (!isSystemSchema && !database.isComplete()) {
-            throw new 
RuleNotExistedException(connectionSession.getDatabaseName());
+            throw new EmptyRuleException(connectionSession.getDatabaseName());
         }
     }
     
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/PreviewExecutor.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/PreviewExecutor.java
index 2acbcff77b1..c723b682e2c 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/PreviewExecutor.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/PreviewExecutor.java
@@ -23,7 +23,7 @@ import 
org.apache.shardingsphere.distsql.handler.aware.DistSQLExecutorConnection
 import 
org.apache.shardingsphere.distsql.handler.aware.DistSQLExecutorDatabaseAware;
 import 
org.apache.shardingsphere.distsql.handler.engine.DistSQLConnectionContext;
 import 
org.apache.shardingsphere.distsql.handler.engine.query.DistSQLQueryExecutor;
-import org.apache.shardingsphere.infra.exception.rule.RuleNotExistedException;
+import org.apache.shardingsphere.infra.exception.rule.EmptyRuleException;
 import org.apache.shardingsphere.distsql.statement.rul.sql.PreviewStatement;
 import 
org.apache.shardingsphere.infra.binder.context.aware.CursorDefinitionAware;
 import 
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
@@ -97,7 +97,7 @@ public final class PreviewExecutor implements 
DistSQLQueryExecutor<PreviewStatem
         if (toBePreviewedStatementContext instanceof CursorAvailable && 
toBePreviewedStatementContext instanceof CursorDefinitionAware) {
             setUpCursorDefinition(toBePreviewedStatementContext);
         }
-        ShardingSpherePreconditions.checkState(database.isComplete(), () -> 
new RuleNotExistedException(database.getName()));
+        ShardingSpherePreconditions.checkState(database.isComplete(), () -> 
new EmptyRuleException(database.getName()));
         String schemaName = 
queryContext.getSqlStatementContext().getTablesContext().getSchemaName()
                 .orElseGet(() -> new 
DatabaseTypeRegistry(database.getProtocolType()).getDefaultSchemaName(database.getName()));
         Collection<ExecutionUnit> executionUnits = 
getExecutionUnits(contextManager, schemaName, metaData, queryContext);


Reply via email to