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

wuweijie 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 e36350c2152 Refactor Algorithm, Resource and RuleDefinitionException 
(#30704)
e36350c2152 is described below

commit e36350c2152bbe4e879e33613818e5975a9ce424
Author: Liang Zhang <[email protected]>
AuthorDate: Sun Mar 31 00:20:53 2024 +0800

    Refactor Algorithm, Resource and RuleDefinitionException (#30704)
    
    * Refactor AlgorithmDefinitionException
    
    * Refactor ResourceDefinitionException
    
    * Refactor RuleDefinitionException
---
 .../content/user-manual/error-code/sql-error-code.cn.md        |  2 +-
 .../content/user-manual/error-code/sql-error-code.en.md        |  2 +-
 .../handler/exception/InvalidStorageUnitStatusException.java   |  2 +-
 .../exception/MissingRequiredReadStorageUnitException.java     |  2 +-
 .../algorithm/core/exception/AlgorithmDefinitionException.java | 10 +++++++++-
 .../core/exception/type/AlgorithmExecuteException.java         |  2 +-
 .../core/exception/type/AlgorithmInitializationException.java  |  2 +-
 .../algorithm/core/exception/type/EmptyAlgorithmException.java |  2 +-
 .../core/exception/type/InUsedAlgorithmException.java          |  2 +-
 .../exception/type/InvalidAlgorithmConfigurationException.java |  4 ++--
 .../core/exception/type/UnregisteredAlgorithmException.java    |  4 ++--
 .../infra/exception/rule/DuplicateRuleException.java           |  6 +++---
 .../exception/rule/InvalidRuleConfigurationException.java      |  6 +++---
 .../infra/exception/rule/MissingRequiredRuleException.java     | 10 +++++-----
 .../infra/exception/rule/RuleInUsedException.java              |  4 ++--
 .../infra/exception/rule/RuleNotExistedException.java          |  2 +-
 .../storageunit/DuplicateStorageUnitExceptionDefinition.java   |  2 +-
 .../infra/exception/storageunit/EmptyStorageUnitException.java |  2 +-
 .../exception/storageunit/InUsedStorageUnitException.java      |  2 +-
 .../exception/storageunit/InvalidStorageUnitsException.java    |  2 +-
 .../storageunit/MissingRequiredStorageUnitsException.java      |  2 +-
 .../exception/storageunit/StorageUnitNotExistedException.java  |  4 ++--
 .../sql/type/kernel/category/ResourceDefinitionException.java  | 10 +++++++++-
 .../sql/type/kernel/category/RuleDefinitionException.java      | 10 +++++++++-
 .../handler/exception/MissingRequiredSingleTableException.java |  2 +-
 25 files changed, 61 insertions(+), 37 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 feb757f829e..76ff2648e0b 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
@@ -44,7 +44,7 @@ SQL 错误码以标准的 SQL State,Vendor Code 和详细错误信息提供,
 | 42S02     | 10302       | '%s' algorithm '%s' on %s is unregistered.         
                            |
 | 44000     | 10303       | %s algorithms '%s' in database '%s' are still in 
used.                         |
 | 44000     | 10304       | Invalid %s algorithm configuration '%s'.           
                            |
-| HY000     | 10309       | Algorithm '%s.%s' execute failed, reason is: %s.   
                            |
+| HY000     | 10350       | Algorithm '%s.%s' execute failed, reason is: %s.   
                            |
 
 ### 数据
 
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 57af866bc95..0f93d51f7ec 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
@@ -48,7 +48,7 @@ SQL error codes provide by standard `SQL State`, `Vendor 
Code` and `Reason`, whi
 | 42S02     | 10302       | '%s' algorithm '%s' on %s is unregistered.         
                            |
 | 44000     | 10303       | %s algorithms '%s' in database '%s' are still in 
used.                         |
 | 44000     | 10304       | Invalid %s algorithm configuration '%s'.           
                            |
-| HY000     | 10309       | Algorithm '%s.%s' execute failed, reason is: %s.   
                            |
+| HY000     | 10350       | Algorithm '%s.%s' execute failed, reason is: %s.   
                            |
 
 ### Data
 
diff --git 
a/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/exception/InvalidStorageUnitStatusException.java
 
b/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/exception/InvalidStorageUnitStatusException.java
index a723cf2e7ce..27294d537c6 100644
--- 
a/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/exception/InvalidStorageUnitStatusException.java
+++ 
b/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/exception/InvalidStorageUnitStatusException.java
@@ -28,6 +28,6 @@ public final class InvalidStorageUnitStatusException extends 
StorageUnitDefiniti
     private static final long serialVersionUID = 4029749233439176539L;
     
     public InvalidStorageUnitStatusException(final String errorMessages) {
-        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 105, "Invalid storage unit 
status, error message is: %s.", errorMessages);
+        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 5, "Invalid storage unit 
status, error message is: %s.", errorMessages);
     }
 }
diff --git 
a/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/exception/MissingRequiredReadStorageUnitException.java
 
b/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/exception/MissingRequiredReadStorageUnitException.java
index 4aab97c2e78..64ba4765f4b 100644
--- 
a/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/exception/MissingRequiredReadStorageUnitException.java
+++ 
b/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/exception/MissingRequiredReadStorageUnitException.java
@@ -28,6 +28,6 @@ public final class MissingRequiredReadStorageUnitException 
extends StorageUnitDe
     private static final long serialVersionUID = -4252553422332603648L;
     
     public MissingRequiredReadStorageUnitException(final String ruleName, 
final String storageUnitName) {
-        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 106, "Read storage unit 
`%s` does not exist in rule `%s`.", storageUnitName, ruleName);
+        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 6, "Read storage unit `%s` 
does not exist in rule `%s`.", storageUnitName, ruleName);
     }
 }
diff --git 
a/infra/algorithm/core/src/main/java/org/apache/shardingsphere/infra/algorithm/core/exception/AlgorithmDefinitionException.java
 
b/infra/algorithm/core/src/main/java/org/apache/shardingsphere/infra/algorithm/core/exception/AlgorithmDefinitionException.java
index 53a0161b86f..2ef530a483e 100644
--- 
a/infra/algorithm/core/src/main/java/org/apache/shardingsphere/infra/algorithm/core/exception/AlgorithmDefinitionException.java
+++ 
b/infra/algorithm/core/src/main/java/org/apache/shardingsphere/infra/algorithm/core/exception/AlgorithmDefinitionException.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.infra.algorithm.core.exception;
 
+import com.google.common.base.Preconditions;
 import 
org.apache.shardingsphere.infra.exception.core.external.sql.sqlstate.SQLState;
 import 
org.apache.shardingsphere.infra.exception.core.external.sql.type.kernel.category.MetaDataSQLException;
 
@@ -27,7 +28,14 @@ public abstract class AlgorithmDefinitionException extends 
MetaDataSQLException
     
     private static final long serialVersionUID = -8947223495845000542L;
     
+    private static final int ALGORITHM_CODE = 3;
+    
     protected AlgorithmDefinitionException(final SQLState sqlState, final int 
errorCode, final String reason, final Object... messageArgs) {
-        super(sqlState, errorCode, reason, messageArgs);
+        super(sqlState, getErrorCode(errorCode), reason, messageArgs);
+    }
+    
+    private static int getErrorCode(final int errorCode) {
+        Preconditions.checkArgument(errorCode >= 0 && errorCode < 100, "The 
value range of error code should be [0, 1000).");
+        return ALGORITHM_CODE * 100 + errorCode;
     }
 }
diff --git 
a/infra/algorithm/core/src/main/java/org/apache/shardingsphere/infra/algorithm/core/exception/type/AlgorithmExecuteException.java
 
b/infra/algorithm/core/src/main/java/org/apache/shardingsphere/infra/algorithm/core/exception/type/AlgorithmExecuteException.java
index d48b8a2d440..f331e27a380 100644
--- 
a/infra/algorithm/core/src/main/java/org/apache/shardingsphere/infra/algorithm/core/exception/type/AlgorithmExecuteException.java
+++ 
b/infra/algorithm/core/src/main/java/org/apache/shardingsphere/infra/algorithm/core/exception/type/AlgorithmExecuteException.java
@@ -29,7 +29,7 @@ public final class AlgorithmExecuteException extends 
AlgorithmDefinitionExceptio
     private static final long serialVersionUID = -9099514178650043282L;
     
     public AlgorithmExecuteException(final ShardingSphereAlgorithm algorithm, 
final String reason, final Object... args) {
-        super(XOpenSQLState.GENERAL_ERROR, 309, "Algorithm '%s.%s' execute 
failed, reason is: %s.",
+        super(XOpenSQLState.GENERAL_ERROR, 50, "Algorithm '%s.%s' execute 
failed, reason is: %s.",
                 algorithm.getClass().getSuperclass().getSimpleName(), 
algorithm.getType(), String.format(reason, args));
     }
 }
diff --git 
a/infra/algorithm/core/src/main/java/org/apache/shardingsphere/infra/algorithm/core/exception/type/AlgorithmInitializationException.java
 
b/infra/algorithm/core/src/main/java/org/apache/shardingsphere/infra/algorithm/core/exception/type/AlgorithmInitializationException.java
index 69a499f5d57..37854289811 100644
--- 
a/infra/algorithm/core/src/main/java/org/apache/shardingsphere/infra/algorithm/core/exception/type/AlgorithmInitializationException.java
+++ 
b/infra/algorithm/core/src/main/java/org/apache/shardingsphere/infra/algorithm/core/exception/type/AlgorithmInitializationException.java
@@ -29,7 +29,7 @@ public final class AlgorithmInitializationException extends 
AlgorithmDefinitionE
     private static final long serialVersionUID = -7634670846091616790L;
     
     public AlgorithmInitializationException(final ShardingSphereAlgorithm 
algorithm, final String reason, final Object... args) {
-        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 300, "Algorithm '%s.'%s' 
initialization failed, reason is: %s.",
+        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 0, "Algorithm '%s.'%s' 
initialization failed, reason is: %s.",
                 algorithm.getClass().getSuperclass().getSimpleName(), 
algorithm.getType(), String.format(reason, args));
     }
 }
diff --git 
a/infra/algorithm/core/src/main/java/org/apache/shardingsphere/infra/algorithm/core/exception/type/EmptyAlgorithmException.java
 
b/infra/algorithm/core/src/main/java/org/apache/shardingsphere/infra/algorithm/core/exception/type/EmptyAlgorithmException.java
index a23b0bdfb03..e837e3a783a 100644
--- 
a/infra/algorithm/core/src/main/java/org/apache/shardingsphere/infra/algorithm/core/exception/type/EmptyAlgorithmException.java
+++ 
b/infra/algorithm/core/src/main/java/org/apache/shardingsphere/infra/algorithm/core/exception/type/EmptyAlgorithmException.java
@@ -29,6 +29,6 @@ public final class EmptyAlgorithmException extends 
AlgorithmDefinitionException
     private static final long serialVersionUID = 8128067899672436211L;
     
     public EmptyAlgorithmException(final String algorithmType, final 
SQLExceptionIdentifier sqlExceptionIdentifier) {
-        super(XOpenSQLState.NOT_FOUND, 301, "'%s' algorithm on %s is 
required.", algorithmType, sqlExceptionIdentifier);
+        super(XOpenSQLState.NOT_FOUND, 1, "'%s' algorithm on %s is required.", 
algorithmType, sqlExceptionIdentifier);
     }
 }
diff --git 
a/infra/algorithm/core/src/main/java/org/apache/shardingsphere/infra/algorithm/core/exception/type/InUsedAlgorithmException.java
 
b/infra/algorithm/core/src/main/java/org/apache/shardingsphere/infra/algorithm/core/exception/type/InUsedAlgorithmException.java
index 52bc9c89215..ffd08d2e219 100644
--- 
a/infra/algorithm/core/src/main/java/org/apache/shardingsphere/infra/algorithm/core/exception/type/InUsedAlgorithmException.java
+++ 
b/infra/algorithm/core/src/main/java/org/apache/shardingsphere/infra/algorithm/core/exception/type/InUsedAlgorithmException.java
@@ -30,6 +30,6 @@ public final class InUsedAlgorithmException extends 
AlgorithmDefinitionException
     private static final long serialVersionUID = -8735125626190637177L;
     
     public InUsedAlgorithmException(final String type, final String 
databaseName, final Collection<String> algorithmNames) {
-        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 303, "%s algorithms '%s' 
in database '%s' are still in used.", type, algorithmNames, databaseName);
+        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 3, "%s algorithms '%s' in 
database '%s' are still in used.", type, algorithmNames, databaseName);
     }
 }
diff --git 
a/infra/algorithm/core/src/main/java/org/apache/shardingsphere/infra/algorithm/core/exception/type/InvalidAlgorithmConfigurationException.java
 
b/infra/algorithm/core/src/main/java/org/apache/shardingsphere/infra/algorithm/core/exception/type/InvalidAlgorithmConfigurationException.java
index 8863e95b505..a2b62582b43 100644
--- 
a/infra/algorithm/core/src/main/java/org/apache/shardingsphere/infra/algorithm/core/exception/type/InvalidAlgorithmConfigurationException.java
+++ 
b/infra/algorithm/core/src/main/java/org/apache/shardingsphere/infra/algorithm/core/exception/type/InvalidAlgorithmConfigurationException.java
@@ -28,10 +28,10 @@ public final class InvalidAlgorithmConfigurationException 
extends AlgorithmDefin
     private static final long serialVersionUID = 1352014079406440573L;
     
     public InvalidAlgorithmConfigurationException(final String algorithmType, 
final String algorithm) {
-        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 304, "Invalid %s algorithm 
configuration '%s'.", algorithmType, algorithm);
+        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 4, "Invalid %s algorithm 
configuration '%s'.", algorithmType, algorithm);
     }
     
     public InvalidAlgorithmConfigurationException(final String algorithmType) {
-        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 304, "Invalid %s algorithm 
configuration.", algorithmType);
+        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 4, "Invalid %s algorithm 
configuration.", algorithmType);
     }
 }
diff --git 
a/infra/algorithm/core/src/main/java/org/apache/shardingsphere/infra/algorithm/core/exception/type/UnregisteredAlgorithmException.java
 
b/infra/algorithm/core/src/main/java/org/apache/shardingsphere/infra/algorithm/core/exception/type/UnregisteredAlgorithmException.java
index b116dce6987..f1528a775c1 100644
--- 
a/infra/algorithm/core/src/main/java/org/apache/shardingsphere/infra/algorithm/core/exception/type/UnregisteredAlgorithmException.java
+++ 
b/infra/algorithm/core/src/main/java/org/apache/shardingsphere/infra/algorithm/core/exception/type/UnregisteredAlgorithmException.java
@@ -31,10 +31,10 @@ public final class UnregisteredAlgorithmException extends 
AlgorithmDefinitionExc
     private static final long serialVersionUID = -4570489906443880879L;
     
     public UnregisteredAlgorithmException(final String algorithmType, final 
String algorithmName, final SQLExceptionIdentifier sqlExceptionIdentifier) {
-        super(XOpenSQLState.NOT_FOUND, 302, "'%s' algorithm '%s' on %s is 
unregistered.", algorithmType, algorithmName, sqlExceptionIdentifier);
+        super(XOpenSQLState.NOT_FOUND, 2, "'%s' algorithm '%s' on %s is 
unregistered.", algorithmType, algorithmName, sqlExceptionIdentifier);
     }
     
     public UnregisteredAlgorithmException(final String algorithmType, final 
Collection<String> algorithmNames, final SQLExceptionIdentifier 
sqlExceptionIdentifier) {
-        super(XOpenSQLState.NOT_FOUND, 302, "'%s' algorithm '%s' on %s are 
unregistered.", algorithmType, String.join(", ", algorithmNames), 
sqlExceptionIdentifier);
+        super(XOpenSQLState.NOT_FOUND, 2, "'%s' algorithm '%s' on %s are 
unregistered.", algorithmType, String.join(", ", algorithmNames), 
sqlExceptionIdentifier);
     }
 }
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 9d99a007da3..8f201ed7d63 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, 205, 
String.format("Duplicate %s rule names `%s` in database `%s`.", ruleType, 
ruleNames, databaseName));
+        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 5, 
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, 205, 
String.format("Duplicate %s rule names `%s`.", ruleType, ruleNames));
+        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 5, 
String.format("Duplicate %s rule names `%s`.", ruleType, ruleNames));
     }
     
     public DuplicateRuleException(final String type, final String 
databaseName) {
-        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 205, 
String.format("Duplicate `%s` in database `%s`.", type, databaseName));
+        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 5, 
String.format("Duplicate `%s` in database `%s`.", type, databaseName));
     }
 }
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/rule/InvalidRuleConfigurationException.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/rule/InvalidRuleConfigurationException.java
index de29a935912..a5ebd010df3 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/rule/InvalidRuleConfigurationException.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/rule/InvalidRuleConfigurationException.java
@@ -30,14 +30,14 @@ public final class InvalidRuleConfigurationException 
extends RuleDefinitionExcep
     private static final long serialVersionUID = 6085010920008859376L;
     
     public InvalidRuleConfigurationException(final String ruleType, final 
String rule, final String errorMessage) {
-        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 200, "Invalid `%s` rule 
`%s`, error message is: %s", ruleType, rule, errorMessage);
+        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 0, "Invalid `%s` rule 
`%s`, error message is: %s", ruleType, rule, errorMessage);
     }
     
     public InvalidRuleConfigurationException(final String ruleType, final 
Collection<String> rules, final Collection<String> errorMessages) {
-        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 200, "Invalid `%s` rules 
`%s`, error messages are: %s", ruleType, rules, errorMessages);
+        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 0, "Invalid `%s` rules 
`%s`, error messages are: %s", ruleType, rules, errorMessages);
     }
     
     public InvalidRuleConfigurationException(final String ruleType, final 
String errorMessage) {
-        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 200, "Invalid `%s` rule, 
error message is: %s", ruleType, errorMessage);
+        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 0, "Invalid `%s` rule, 
error message is: %s", ruleType, errorMessage);
     }
 }
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 405344681a8..06d3e6cff90 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, 201, String.format("%s 
rule does not exist.", ruleType));
+        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 1, "%s rule does not 
exist.", ruleType);
     }
     
     public MissingRequiredRuleException(final String ruleType, final String 
databaseName) {
-        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 201, String.format("%s 
rule does not exist in database `%s`.", ruleType, databaseName));
+        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 1, "%s rule does not exist 
in database `%s`.", ruleType, databaseName);
     }
     
     public MissingRequiredRuleException(final String ruleType, final 
Collection<String> ruleNames) {
-        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 201, String.format("%s 
rules `%s` do not exist.", ruleType, ruleNames));
+        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 1, "%s rules `%s` do not 
exist.", ruleType, ruleNames);
     }
     
     public MissingRequiredRuleException(final String ruleType, final String 
databaseName, final String ruleName) {
-        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 101, String.format("%s 
rule `%s` do not exist in database `%s`.", ruleType, ruleName, databaseName));
+        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 1, "%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, 101, String.format("%s 
rules `%s` do not exist in database `%s`.", ruleType, ruleNames, databaseName));
+        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 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/rule/RuleInUsedException.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/rule/RuleInUsedException.java
index eefe3cdb4d5..020dfad9455 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/RuleInUsedException.java
@@ -30,10 +30,10 @@ public final class RuleInUsedException 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, 202, "%s rules `%s` in 
database `%s` are still in used.", ruleType, ruleNames, databaseName);
+        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 2, "%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, 202, "%s rules `%s` in 
database `%s` are still in used by %s.", ruleType, ruleNames, databaseName, 
usingType);
+        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 2, "%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/RuleNotExistedException.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/rule/RuleNotExistedException.java
index a397e397a00..8d5d6a5543c 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/RuleNotExistedException.java
@@ -28,6 +28,6 @@ public final class RuleNotExistedException extends 
RuleDefinitionException {
     private static final long serialVersionUID = -4150905802300104824L;
     
     public RuleNotExistedException(final String databaseName) {
-        super(XOpenSQLState.SYNTAX_ERROR, 210, "There is no rule in database 
'%s'.", databaseName);
+        super(XOpenSQLState.SYNTAX_ERROR, 10, "There is no rule in database 
'%s'.", databaseName);
     }
 }
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/DuplicateStorageUnitExceptionDefinition.java
index 1ad734c2230..b57e7b665b3 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/DuplicateStorageUnitExceptionDefinition.java
@@ -30,6 +30,6 @@ public final class DuplicateStorageUnitExceptionDefinition 
extends ResourceDefin
     private static final long serialVersionUID = 2103793827572264148L;
     
     public DuplicateStorageUnitExceptionDefinition(final Collection<String> 
storageUnitNames) {
-        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 104, "Duplicate storage 
unit names '%s'.", storageUnitNames);
+        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 4, "Duplicate storage unit 
names '%s'.", storageUnitNames);
     }
 }
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/storageunit/EmptyStorageUnitException.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/storageunit/EmptyStorageUnitException.java
index a7334d6f879..1d657b5ddd3 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/storageunit/EmptyStorageUnitException.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/storageunit/EmptyStorageUnitException.java
@@ -28,6 +28,6 @@ public final class EmptyStorageUnitException extends 
ResourceDefinitionException
     private static final long serialVersionUID = 1704331180489268L;
     
     public EmptyStorageUnitException(final String databaseName) {
-        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 102, "There is no storage 
unit in the database `%s`.", databaseName);
+        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 2, "There is no storage 
unit in the database `%s`.", databaseName);
     }
 }
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/storageunit/InUsedStorageUnitException.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/storageunit/InUsedStorageUnitException.java
index 2b231305e79..1d81beae5c3 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/storageunit/InUsedStorageUnitException.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/storageunit/InUsedStorageUnitException.java
@@ -32,6 +32,6 @@ public final class InUsedStorageUnitException extends 
ResourceDefinitionExceptio
     private static final long serialVersionUID = -3427324685070457375L;
     
     public InUsedStorageUnitException(final String storageUnitName, final 
Collection<Class<? extends ShardingSphereRule>> ruleClasses) {
-        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 103, "Storage unit '%s' 
still used by '%s'.", storageUnitName, 
ruleClasses.stream().map(Class::getSimpleName).collect(Collectors.joining(", 
")));
+        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 3, "Storage unit '%s' 
still used by '%s'.", storageUnitName, 
ruleClasses.stream().map(Class::getSimpleName).collect(Collectors.joining(", 
")));
     }
 }
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/storageunit/InvalidStorageUnitsException.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/storageunit/InvalidStorageUnitsException.java
index 248eb742f8d..a2022631207 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/storageunit/InvalidStorageUnitsException.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/storageunit/InvalidStorageUnitsException.java
@@ -30,6 +30,6 @@ public final class InvalidStorageUnitsException extends 
ResourceDefinitionExcept
     private static final long serialVersionUID = 7029641448948791509L;
     
     public InvalidStorageUnitsException(final Collection<String> 
errorMessages) {
-        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 100, "Can not process 
invalid storage units, error messages are: %s", errorMessages);
+        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 0, "Can not process 
invalid storage units, error messages are: %s", errorMessages);
     }
 }
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/storageunit/MissingRequiredStorageUnitsException.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/storageunit/MissingRequiredStorageUnitsException.java
index 3474a6b9f61..b956ccf335a 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/storageunit/MissingRequiredStorageUnitsException.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/storageunit/MissingRequiredStorageUnitsException.java
@@ -30,6 +30,6 @@ public final class MissingRequiredStorageUnitsException 
extends ResourceDefiniti
     private static final long serialVersionUID = 1704331180489268L;
     
     public MissingRequiredStorageUnitsException(final String databaseName, 
final Collection<String> storageUnitNames) {
-        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 101, "Storage units `%s` 
do not exist in database `%s`.", storageUnitNames, databaseName);
+        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 1, "Storage units `%s` do 
not exist in database `%s`.", storageUnitNames, databaseName);
     }
 }
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/storageunit/StorageUnitNotExistedException.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/storageunit/StorageUnitNotExistedException.java
index a107a9b59c0..e0729ae1ba4 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/storageunit/StorageUnitNotExistedException.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/storageunit/StorageUnitNotExistedException.java
@@ -28,10 +28,10 @@ public final class StorageUnitNotExistedException extends 
ResourceDefinitionExce
     private static final long serialVersionUID = 4146100333670404924L;
     
     public StorageUnitNotExistedException() {
-        super(XOpenSQLState.SYNTAX_ERROR, 107, "There is no storage unit in 
any database.");
+        super(XOpenSQLState.SYNTAX_ERROR, 7, "There is no storage unit in any 
database.");
     }
     
     public StorageUnitNotExistedException(final String databaseName) {
-        super(XOpenSQLState.SYNTAX_ERROR, 107, "There is no storage unit in 
database `%s`.", databaseName);
+        super(XOpenSQLState.SYNTAX_ERROR, 7, "There is no storage unit in 
database `%s`.", databaseName);
     }
 }
diff --git 
a/infra/exception/core/src/main/java/org/apache/shardingsphere/infra/exception/core/external/sql/type/kernel/category/ResourceDefinitionException.java
 
b/infra/exception/core/src/main/java/org/apache/shardingsphere/infra/exception/core/external/sql/type/kernel/category/ResourceDefinitionException.java
index ea592fa560f..8832b7bcb3d 100644
--- 
a/infra/exception/core/src/main/java/org/apache/shardingsphere/infra/exception/core/external/sql/type/kernel/category/ResourceDefinitionException.java
+++ 
b/infra/exception/core/src/main/java/org/apache/shardingsphere/infra/exception/core/external/sql/type/kernel/category/ResourceDefinitionException.java
@@ -17,6 +17,7 @@
 
 package 
org.apache.shardingsphere.infra.exception.core.external.sql.type.kernel.category;
 
+import com.google.common.base.Preconditions;
 import 
org.apache.shardingsphere.infra.exception.core.external.sql.sqlstate.SQLState;
 
 /**
@@ -26,7 +27,14 @@ public abstract class ResourceDefinitionException extends 
MetaDataSQLException {
     
     private static final long serialVersionUID = -7111524353233598083L;
     
+    private static final int RESOURCE_CODE = 1;
+    
     protected ResourceDefinitionException(final SQLState sqlState, final int 
errorCode, final String reason, final Object... messageArgs) {
-        super(sqlState, errorCode, reason, messageArgs);
+        super(sqlState, getErrorCode(errorCode), reason, messageArgs);
+    }
+    
+    private static int getErrorCode(final int errorCode) {
+        Preconditions.checkArgument(errorCode >= 0 && errorCode < 100, "The 
value range of error code should be [0, 1000).");
+        return RESOURCE_CODE * 100 + errorCode;
     }
 }
diff --git 
a/infra/exception/core/src/main/java/org/apache/shardingsphere/infra/exception/core/external/sql/type/kernel/category/RuleDefinitionException.java
 
b/infra/exception/core/src/main/java/org/apache/shardingsphere/infra/exception/core/external/sql/type/kernel/category/RuleDefinitionException.java
index 226e3ba9f6e..3c997171701 100644
--- 
a/infra/exception/core/src/main/java/org/apache/shardingsphere/infra/exception/core/external/sql/type/kernel/category/RuleDefinitionException.java
+++ 
b/infra/exception/core/src/main/java/org/apache/shardingsphere/infra/exception/core/external/sql/type/kernel/category/RuleDefinitionException.java
@@ -17,6 +17,7 @@
 
 package 
org.apache.shardingsphere.infra.exception.core.external.sql.type.kernel.category;
 
+import com.google.common.base.Preconditions;
 import 
org.apache.shardingsphere.infra.exception.core.external.sql.sqlstate.SQLState;
 
 /**
@@ -26,7 +27,14 @@ public abstract class RuleDefinitionException extends 
MetaDataSQLException {
     
     private static final long serialVersionUID = -6414242067345718028L;
     
+    private static final int RULE_CODE = 2;
+    
     protected RuleDefinitionException(final SQLState sqlState, final int 
errorCode, final String reason, final Object... messageArgs) {
-        super(sqlState, errorCode, reason, messageArgs);
+        super(sqlState, getErrorCode(errorCode), reason, messageArgs);
+    }
+    
+    private static int getErrorCode(final int errorCode) {
+        Preconditions.checkArgument(errorCode >= 0 && errorCode < 100, "The 
value range of error code should be [0, 1000).");
+        return RULE_CODE * 100 + errorCode;
     }
 }
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 426ca7faf4e..dfdb87ede44 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
@@ -28,6 +28,6 @@ public final class MissingRequiredSingleTableException 
extends RuleDefinitionExc
     private static final long serialVersionUID = 3155006580453893122L;
     
     public MissingRequiredSingleTableException(final String storageUnitName, 
final String tableName) {
-        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 206, 
String.format("Missing required table `%s` in storage unit `%s`.", tableName, 
storageUnitName));
+        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 6, "Missing required table 
`%s` in storage unit `%s`.", tableName, storageUnitName);
     }
 }


Reply via email to