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

panjuan 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 e89faf83cff Refactor KernelSQLException and impls (#20916)
e89faf83cff is described below

commit e89faf83cffee6d75615e2e1f3b3b0add64647f7
Author: Liang Zhang <[email protected]>
AuthorDate: Sun Sep 11 13:28:45 2022 +0800

    Refactor KernelSQLException and impls (#20916)
---
 .../user-manual/error-code/sql-error-code.cn.md    | 68 +++++++++++-----------
 .../user-manual/error-code/sql-error-code.en.md    | 68 +++++++++++-----------
 .../infra/check/SQLCheckException.java             |  4 +-
 .../metadata/UnrecognizedDatabaseURLException.java |  4 +-
 ...tException.java => ConnectionSQLException.java} | 14 +++--
 ...sFormatException.java => DataSQLException.java} | 14 +++--
 .../exception/InvalidDataNodesFormatException.java |  5 +-
 ...matException.java => MetaDataSQLException.java} | 14 +++--
 .../OverallConnectionNotEnoughException.java       |  5 +-
 ...ormatException.java => SyntaxSQLException.java} | 14 +++--
 ...eLockedException.java => LockSQLException.java} | 14 +++--
 .../exception/TableLockWaitTimeoutException.java   |  5 +-
 .../infra/lock/exception/TableLockedException.java |  5 +-
 ...nsupportedActualDataNodeStructureException.java |  4 +-
 ...DatetimeConfigurationFileNotFoundException.java |  6 +-
 .../exception/DatetimeLoadingException.java        |  6 +-
 .../UnsupportedDataTypeConversionException.java    |  6 +-
 ...nsupportedStreamCharsetConversionException.java |  4 +-
 .../sql/type/kernel/KernelSQLException.java        |  8 ++-
 .../sql/type/kernel/KernelSQLExceptionTest.java    | 49 ++++++++++++++++
 .../driver/DriverRegisterException.java            |  6 +-
 .../exception/ColumnIndexOutOfRangeException.java  |  6 +-
 .../exception/ColumnLabelNotFoundException.java    |  6 +-
 .../jdbc/exception/ConnectionClosedException.java  |  6 +-
 .../driver/jdbc/exception/EmptySQLException.java   |  6 +-
 .../JDBCTransactionAcrossDatabasesException.java   |  6 +-
 .../jdbc/exception/ResultSetClosedException.java   |  6 +-
 .../exception/CreateTableSQLGenerateException.java |  5 +-
 .../exception/PipelineJobNotFoundException.java    |  5 +-
 ...ateException.java => PipelineSQLException.java} | 14 +++--
 .../exception/DropNotEmptySchemaException.java     |  6 +-
 .../exception/SchemaNotFoundException.java         |  6 +-
 .../exception/SingleTableNotFoundException.java    |  6 +-
 .../exception/SingleTablesLoadingException.java    |  6 +-
 .../UnsupportedDropCascadeTableException.java      |  6 +-
 .../OptimizationSQLNodeConvertException.java       |  4 +-
 .../SwitchTypeInTransactionException.java          |  5 +-
 ...Exception.java => TransactionSQLException.java} | 14 +++--
 .../jta/datasource/swapper/DataSourceSwapper.java  |  1 +
 .../XADataSourceInitializeException.java           |  8 +--
 .../XATransactionNestedBeginException.java}        | 12 ++--
 ...gnedException.java => ClusterSQLException.java} | 14 +++--
 .../exception/WorkIdAssignedException.java         |  5 +-
 .../proxy/backend/exception/FileIOException.java   |  6 +-
 .../backend/exception/InvalidValueException.java   |  6 +-
 .../exception/ResourceNotExistedException.java     |  6 +-
 .../backend/exception/RuleNotExistedException.java |  6 +-
 .../exception/UnsupportedVariableException.java    |  6 +-
 .../handler/transaction/TransactionXAHandler.java  |  4 +-
 .../frontend/exception/CircuitBreakException.java  |  4 +-
 .../mysql/err/MySQLErrPacketFactoryTest.java       |  2 +-
 .../sql/parser/exception/SQLParsingException.java  |  4 +-
 52 files changed, 293 insertions(+), 227 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 279f9ae0fc2..e2d72cc48f3 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
@@ -10,43 +10,43 @@ SQL 错误码以标准的 SQL State,Vendor Code 和详细错误信息提供,
 
 | SQL State | Vendor Code | 错误信息 |
 | --------- | ----------- | ------ |
-| 01000     | 10000       | Circuit break open, the request has been ignored |
 | 08000     | 10001       | The URL \`%s\` is not recognized, please refer to 
the pattern \`%s\` |
 | 42000     | 10002       | Can not support 3-tier structure for actual data 
node \`%s\` with JDBC \`%s\` |
 | 42000     | 10003       | Unsupported SQL node conversion for SQL statement 
\`%s\` |
-| HY004     | 10004       | Unsupported conversion data type \`%s\` for value 
\`%s\` |
-| HY004     | 10005       | Unsupported conversion stream charset \`%s\` |
-| HY004     | 10006       | SQL String can not be NULL or empty |
-| 08000     | 10007       | Can not get %d connections one time, partition 
succeed connection(%d) have released. Please consider increasing the 
\`maxPoolSize\` of the data sources or decreasing the 
\`max-connections-size-per-query\` in properties |
-| HY004     | 10100       | Can not register driver, reason is: %s |
-| HY000     | 10300       | Could not support variable \`%s\` |
-| HY004     | 10301       | Invalid value \`%s\` |
-| HV008     | 10302       | Column index \`%d\` is out of range |
-| 42S02     | 10303       | Can not find column label \`%s\` |
-| HY004     | 10400       | Invalid format for actual data node \`%s\` |
-| 08000     | 10500       | Connection has been closed |
-| 08000     | 10501       | Result set has been closed |
-| 42000     | 11000       | You have an error in your SQL syntax: %s |
-| 42000     | 11002       | Resource does not exist |
-| 42000     | 11003       | Rule does not exist |
-| HY000     | 11004       | File access failed, reason is: %s |
-| 25000     | 11320       | Switch transaction type failed, please terminate 
the current transaction |
-| 25000     | 11321       | JDBC does not support operations across multiple 
logical databases in transaction |
-| 25000     | 11322       | Failed to create \`%s\` XA data source |
-| 25000     | 11323       | Can not start new XA transaction in a active 
transaction |
-| 44000     | 13000       | SQL check failed, error message: %s |
-| HY000     | 14000       | The table \`%s\` of schema \`%s\` is locked |
-| HY000     | 14001       | The table \`%s\` of schema \`%s\` lock wait 
timeout of %s ms exceeded |
-| HY000     | 14010       | Can not find \`%s\` file for datetime initialize |
-| HY000     | 14011       | Load datetime from database failed, reason: %s |
-| HY000     | 15000       | Work ID assigned failed, which can not exceed 1024 
|
-| HY000     | 16000       | Can not find pipeline job \`%s\` |
-| HY000     | 16001       | Failed to get DDL for table \`%s\` |
-| 42S02     | 17000       | Single table \`%s\` does not exist |
-| 42S02     | 17001       | Schema \`%s\` does not exist |
-| HY000     | 17002       | Can not load table with database name \`%s\` and 
data source name \`%s\` |
-| 0A000     | 17003       | Can not drop schema \`%s\` because of contains 
tables |
-| 0A000     | 17010       | DROP TABLE ... CASCADE is not supported |
+| 42000     | 10012       | Resource does not exist |
+| 42000     | 10013       | Rule does not exist |
+| HY004     | 10014       | Invalid format for actual data node \`%s\` |
+| 42S02     | 10020       | Single table \`%s\` does not exist |
+| 42S02     | 10021       | Schema \`%s\` does not exist |
+| HY000     | 10022       | Can not load table with database name \`%s\` and 
data source name \`%s\` |
+| 0A000     | 10023       | Can not drop schema \`%s\` because of contains 
tables |
+| HY004     | 11001       | Invalid value \`%s\` |
+| HY004     | 11005       | Unsupported conversion stream charset \`%s\` |
+| HY004     | 11006       | Unsupported conversion data type \`%s\` for value 
\`%s\` |
+| 42000     | 12000       | You have an error in your SQL syntax: %s |
+| HV008     | 12002       | Column index \`%d\` is out of range |
+| 42S02     | 12003       | Can not find column label \`%s\` |
+| 0A000     | 12004       | DROP TABLE ... CASCADE is not supported |
+| HY000     | 12005       | Could not support variable \`%s\` |
+| HY004     | 12010       | SQL String can not be NULL or empty |
+| 01000     | 13000       | Circuit break open, the request has been ignored |
+| 08000     | 13001       | Can not get %d connections one time, partition 
succeed connection(%d) have released. Please consider increasing the 
\`maxPoolSize\` of the data sources or decreasing the 
\`max-connections-size-per-query\` in properties |
+| 08000     | 13002       | Connection has been closed |
+| 08000     | 13003       | Result set has been closed |
+| HY000     | 13004       | Load datetime from database failed, reason: %s |
+| HY004     | 13010       | Can not register driver, reason is: %s |
+| 25000     | 14000       | Switch transaction type failed, please terminate 
the current transaction |
+| 25000     | 14001       | Can not start new XA transaction in a active 
transaction |
+| 25000     | 14002       | Failed to create \`%s\` XA data source |
+| 25000     | 14003       | JDBC does not support operations across multiple 
logical databases in transaction |
+| HY000     | 15000       | The table \`%s\` of schema \`%s\` is locked |
+| HY000     | 15001       | The table \`%s\` of schema \`%s\` lock wait 
timeout of \`%s\` milliseconds exceeded |
+| 44000     | 16000       | SQL check failed, error message: %s |
+| HY000     | 17000       | Work ID assigned failed, which can not exceed 1024 
|
+| HY000     | 17001       | Can not find \`%s\` file for datetime initialize |
+| HY000     | 17002       | File access failed, reason is: %s |
+| HY000     | 18000       | Can not find pipeline job \`%s\` |
+| HY000     | 18001       | Failed to get DDL for table \`%s\` |
 | HY000     | 20000       | Sharding algorithm class \`%s\` should be 
implement \`%s\` |
 | 44000     | 20001       | Can not get uniformed table structure for logic 
table \`%s\`, it has different meta data of actual tables are as follows: %s |
 | 42S02     | 20002       | Can not get route result, please check your 
sharding rule configuration |
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 b8cc35fe547..a930668bacf 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
@@ -10,43 +10,43 @@ SQL error codes provide by standard `SQL State`, `Vendor 
Code` and `Reason`, whi
 
 | SQL State | Vendor Code | Reason |
 | --------- | ----------- | ------ |
-| 01000     | 10000       | Circuit break open, the request has been ignored |
 | 08000     | 10001       | The URL \`%s\` is not recognized, please refer to 
the pattern \`%s\` |
 | 42000     | 10002       | Can not support 3-tier structure for actual data 
node \`%s\` with JDBC \`%s\` |
 | 42000     | 10003       | Unsupported SQL node conversion for SQL statement 
\`%s\` |
-| HY004     | 10004       | Unsupported conversion data type \`%s\` for value 
\`%s\` |
-| HY004     | 10005       | Unsupported conversion stream charset \`%s\` |
-| HY004     | 10006       | SQL String can not be NULL or empty |
-| 08000     | 10007       | Can not get %d connections one time, partition 
succeed connection(%d) have released. Please consider increasing the 
\`maxPoolSize\` of the data sources or decreasing the 
\`max-connections-size-per-query\` in properties |
-| HY004     | 10100       | Can not register driver, reason is: %s |
-| HY000     | 10300       | Could not support variable \`%s\` |
-| HY004     | 10301       | Invalid value \`%s\` |
-| HV008     | 10302       | Column index \`%d\` is out of range |
-| 42S02     | 10303       | Can not find column label \`%s\` |
-| HY004     | 10400       | Invalid format for actual data node \`%s\` |
-| 08000     | 10500       | Connection has been closed |
-| 08000     | 10501       | Result set has been closed |
-| 42000     | 11000       | You have an error in your SQL syntax: %s |
-| 42000     | 11002       | Resource does not exist |
-| 42000     | 11003       | Rule does not exist |
-| HY000     | 11004       | File access failed, reason is: %s |
-| 25000     | 11320       | Switch transaction type failed, please terminate 
the current transaction |
-| 25000     | 11321       | JDBC does not support operations across multiple 
logical databases in transaction |
-| 25000     | 11322       | Failed to create \`%s\` XA data source |
-| 25000     | 11323       | Can not start new XA transaction in a active 
transaction |
-| 44000     | 13000       | SQL check failed, error message: %s |
-| HY000     | 14000       | The table \`%s\` of schema \`%s\` is locked |
-| HY000     | 14001       | The table \`%s\` of schema \`%s\` lock wait 
timeout of %s ms exceeded |
-| HY000     | 14010       | Can not find \`%s\` file for datetime initialize |
-| HY000     | 14011       | Load datetime from database failed, reason: %s |
-| HY000     | 15000       | Work ID assigned failed, which can not exceed 1024 
|
-| HY000     | 16000       | Can not find pipeline job \`%s\` |
-| HY000     | 16001       | Failed to get DDL for table \`%s\` |
-| 42S02     | 17000       | Single table \`%s\` does not exist |
-| 42S02     | 17001       | Schema \`%s\` does not exist |
-| HY000     | 17002       | Can not load table with database name \`%s\` and 
data source name \`%s\` |
-| 0A000     | 17003       | Can not drop schema \`%s\` because of contains 
tables |
-| 0A000     | 17010       | DROP TABLE ... CASCADE is not supported |
+| 42000     | 10012       | Resource does not exist |
+| 42000     | 10013       | Rule does not exist |
+| HY004     | 10014       | Invalid format for actual data node \`%s\` |
+| 42S02     | 10020       | Single table \`%s\` does not exist |
+| 42S02     | 10021       | Schema \`%s\` does not exist |
+| HY000     | 10022       | Can not load table with database name \`%s\` and 
data source name \`%s\` |
+| 0A000     | 10023       | Can not drop schema \`%s\` because of contains 
tables |
+| HY004     | 11001       | Invalid value \`%s\` |
+| HY004     | 11005       | Unsupported conversion stream charset \`%s\` |
+| HY004     | 11006       | Unsupported conversion data type \`%s\` for value 
\`%s\` |
+| 42000     | 12000       | You have an error in your SQL syntax: %s |
+| HV008     | 12002       | Column index \`%d\` is out of range |
+| 42S02     | 12003       | Can not find column label \`%s\` |
+| 0A000     | 12004       | DROP TABLE ... CASCADE is not supported |
+| HY000     | 12005       | Could not support variable \`%s\` |
+| HY004     | 12010       | SQL String can not be NULL or empty |
+| 01000     | 13000       | Circuit break open, the request has been ignored |
+| 08000     | 13001       | Can not get %d connections one time, partition 
succeed connection(%d) have released. Please consider increasing the 
\`maxPoolSize\` of the data sources or decreasing the 
\`max-connections-size-per-query\` in properties |
+| 08000     | 13002       | Connection has been closed |
+| 08000     | 13003       | Result set has been closed |
+| HY000     | 13004       | Load datetime from database failed, reason: %s |
+| HY004     | 13010       | Can not register driver, reason is: %s |
+| 25000     | 14000       | Switch transaction type failed, please terminate 
the current transaction |
+| 25000     | 14001       | Can not start new XA transaction in a active 
transaction |
+| 25000     | 14002       | Failed to create \`%s\` XA data source |
+| 25000     | 14003       | JDBC does not support operations across multiple 
logical databases in transaction |
+| HY000     | 15000       | The table \`%s\` of schema \`%s\` is locked |
+| HY000     | 15001       | The table \`%s\` of schema \`%s\` lock wait 
timeout of \`%s\` milliseconds exceeded |
+| 44000     | 16000       | SQL check failed, error message: %s |
+| HY000     | 17000       | Work ID assigned failed, which can not exceed 1024 
|
+| HY000     | 17001       | Can not find \`%s\` file for datetime initialize |
+| HY000     | 17002       | File access failed, reason is: %s |
+| HY000     | 18000       | Can not find pipeline job \`%s\` |
+| HY000     | 18001       | Failed to get DDL for table \`%s\` |
 | HY000     | 20000       | Sharding algorithm class \`%s\` should be 
implement \`%s\` |
 | 44000     | 20001       | Can not get uniformed table structure for logic 
table \`%s\`, it has different meta data of actual tables are as follows: %s |
 | 42S02     | 20002       | Can not get route result, please check your 
sharding rule configuration |
diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/check/SQLCheckException.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/check/SQLCheckException.java
index 225aa7d21ba..c35035b83c5 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/check/SQLCheckException.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/check/SQLCheckException.java
@@ -27,7 +27,9 @@ public final class SQLCheckException extends 
KernelSQLException {
     
     private static final long serialVersionUID = 4183020614721058122L;
     
+    private static final int KERNEL_CODE = 6;
+    
     public SQLCheckException(final String errorMessage) {
-        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 3000, "SQL check failed, 
error message: %s", errorMessage);
+        super(XOpenSQLState.CHECK_OPTION_VIOLATION, KERNEL_CODE, 0, "SQL check 
failed, error message: %s", errorMessage);
     }
 }
diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/database/metadata/UnrecognizedDatabaseURLException.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/database/metadata/UnrecognizedDatabaseURLException.java
index 4898af3d38b..535716721cc 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/database/metadata/UnrecognizedDatabaseURLException.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/database/metadata/UnrecognizedDatabaseURLException.java
@@ -17,13 +17,13 @@
 
 package org.apache.shardingsphere.infra.database.metadata;
 
-import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.kernel.KernelSQLException;
+import org.apache.shardingsphere.infra.exception.MetaDataSQLException;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
 
 /**
  * Unrecognized database URL exception.
  */
-public final class UnrecognizedDatabaseURLException extends KernelSQLException 
{
+public final class UnrecognizedDatabaseURLException extends 
MetaDataSQLException {
     
     private static final long serialVersionUID = -1551117178863766353L;
     
diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/exception/InvalidDataNodesFormatException.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/exception/ConnectionSQLException.java
similarity index 69%
copy from 
shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/exception/InvalidDataNodesFormatException.java
copy to 
shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/exception/ConnectionSQLException.java
index 71b3c3c2767..6f84e85e7b9 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/exception/InvalidDataNodesFormatException.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/exception/ConnectionSQLException.java
@@ -17,17 +17,19 @@
 
 package org.apache.shardingsphere.infra.exception;
 
+import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.SQLState;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.kernel.KernelSQLException;
-import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
 
 /**
- * Invalid data nodes format exception.
+ * Connection SQL exception.
  */
-public final class InvalidDataNodesFormatException extends KernelSQLException {
+public abstract class ConnectionSQLException extends KernelSQLException {
     
-    private static final long serialVersionUID = 192279170808654743L;
+    private static final long serialVersionUID = -8121891030054008537L;
     
-    public InvalidDataNodesFormatException(final String dataNode) {
-        super(XOpenSQLState.INVALID_DATA_TYPE, 400, "Invalid format for actual 
data node `%s`", dataNode);
+    private static final int KERNEL_CODE = 3;
+    
+    public ConnectionSQLException(final SQLState sqlState, final int 
errorCode, final String reason, final Object... messageArguments) {
+        super(sqlState, KERNEL_CODE, errorCode, reason, messageArguments);
     }
 }
diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/exception/InvalidDataNodesFormatException.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/exception/DataSQLException.java
similarity index 70%
copy from 
shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/exception/InvalidDataNodesFormatException.java
copy to 
shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/exception/DataSQLException.java
index 71b3c3c2767..a5d776eb639 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/exception/InvalidDataNodesFormatException.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/exception/DataSQLException.java
@@ -17,17 +17,19 @@
 
 package org.apache.shardingsphere.infra.exception;
 
+import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.SQLState;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.kernel.KernelSQLException;
-import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
 
 /**
- * Invalid data nodes format exception.
+ * Data SQL exception.
  */
-public final class InvalidDataNodesFormatException extends KernelSQLException {
+public abstract class DataSQLException extends KernelSQLException {
     
-    private static final long serialVersionUID = 192279170808654743L;
+    private static final long serialVersionUID = -3442297815489000345L;
     
-    public InvalidDataNodesFormatException(final String dataNode) {
-        super(XOpenSQLState.INVALID_DATA_TYPE, 400, "Invalid format for actual 
data node `%s`", dataNode);
+    private static final int KERNEL_CODE = 1;
+    
+    public DataSQLException(final SQLState sqlState, final int errorCode, 
final String reason, final Object... messageArguments) {
+        super(sqlState, KERNEL_CODE, errorCode, reason, messageArguments);
     }
 }
diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/exception/InvalidDataNodesFormatException.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/exception/InvalidDataNodesFormatException.java
index 71b3c3c2767..5369fdd7b53 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/exception/InvalidDataNodesFormatException.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/exception/InvalidDataNodesFormatException.java
@@ -17,17 +17,16 @@
 
 package org.apache.shardingsphere.infra.exception;
 
-import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.kernel.KernelSQLException;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
 
 /**
  * Invalid data nodes format exception.
  */
-public final class InvalidDataNodesFormatException extends KernelSQLException {
+public final class InvalidDataNodesFormatException extends 
MetaDataSQLException {
     
     private static final long serialVersionUID = 192279170808654743L;
     
     public InvalidDataNodesFormatException(final String dataNode) {
-        super(XOpenSQLState.INVALID_DATA_TYPE, 400, "Invalid format for actual 
data node `%s`", dataNode);
+        super(XOpenSQLState.INVALID_DATA_TYPE, 14, "Invalid format for actual 
data node `%s`", dataNode);
     }
 }
diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/exception/InvalidDataNodesFormatException.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/exception/MetaDataSQLException.java
similarity index 69%
copy from 
shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/exception/InvalidDataNodesFormatException.java
copy to 
shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/exception/MetaDataSQLException.java
index 71b3c3c2767..130c503ea09 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/exception/InvalidDataNodesFormatException.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/exception/MetaDataSQLException.java
@@ -17,17 +17,19 @@
 
 package org.apache.shardingsphere.infra.exception;
 
+import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.SQLState;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.kernel.KernelSQLException;
-import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
 
 /**
- * Invalid data nodes format exception.
+ * Meta data SQL exception.
  */
-public final class InvalidDataNodesFormatException extends KernelSQLException {
+public abstract class MetaDataSQLException extends KernelSQLException {
     
-    private static final long serialVersionUID = 192279170808654743L;
+    private static final long serialVersionUID = 884884613851959565L;
     
-    public InvalidDataNodesFormatException(final String dataNode) {
-        super(XOpenSQLState.INVALID_DATA_TYPE, 400, "Invalid format for actual 
data node `%s`", dataNode);
+    private static final int KERNEL_CODE = 0;
+    
+    public MetaDataSQLException(final SQLState sqlState, final int errorCode, 
final String reason, final Object... messageArguments) {
+        super(sqlState, KERNEL_CODE, errorCode, reason, messageArguments);
     }
 }
diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/exception/OverallConnectionNotEnoughException.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/exception/OverallConnectionNotEnoughException.java
index ecc77c04abd..4d74007de8a 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/exception/OverallConnectionNotEnoughException.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/exception/OverallConnectionNotEnoughException.java
@@ -17,18 +17,17 @@
 
 package org.apache.shardingsphere.infra.exception;
 
-import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.kernel.KernelSQLException;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
 
 /**
  * Overall connection not enough exception.
  */
-public final class OverallConnectionNotEnoughException extends 
KernelSQLException {
+public final class OverallConnectionNotEnoughException extends 
ConnectionSQLException {
     
     private static final long serialVersionUID = -1297088138042287804L;
     
     public OverallConnectionNotEnoughException(final int desiredSize, final 
int actualSize) {
-        super(XOpenSQLState.CONNECTION_EXCEPTION, 7, "Can not get %d 
connections one time, partition succeed connection(%d) have released. "
+        super(XOpenSQLState.CONNECTION_EXCEPTION, 1, "Can not get %d 
connections one time, partition succeed connection(%d) have released. "
                 + "Please consider increasing the `maxPoolSize` of the data 
sources or decreasing the `max-connections-size-per-query` in properties", 
desiredSize, actualSize);
     }
 }
diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/exception/InvalidDataNodesFormatException.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/exception/SyntaxSQLException.java
similarity index 70%
copy from 
shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/exception/InvalidDataNodesFormatException.java
copy to 
shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/exception/SyntaxSQLException.java
index 71b3c3c2767..6f046dc4528 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/exception/InvalidDataNodesFormatException.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/exception/SyntaxSQLException.java
@@ -17,17 +17,19 @@
 
 package org.apache.shardingsphere.infra.exception;
 
+import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.SQLState;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.kernel.KernelSQLException;
-import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
 
 /**
- * Invalid data nodes format exception.
+ * Syntax SQL exception.
  */
-public final class InvalidDataNodesFormatException extends KernelSQLException {
+public abstract class SyntaxSQLException extends KernelSQLException {
     
-    private static final long serialVersionUID = 192279170808654743L;
+    private static final long serialVersionUID = -895529952047297716L;
     
-    public InvalidDataNodesFormatException(final String dataNode) {
-        super(XOpenSQLState.INVALID_DATA_TYPE, 400, "Invalid format for actual 
data node `%s`", dataNode);
+    private static final int KERNEL_CODE = 2;
+    
+    public SyntaxSQLException(final SQLState sqlState, final int errorCode, 
final String reason, final Object... messageArguments) {
+        super(sqlState, KERNEL_CODE, errorCode, reason, messageArguments);
     }
 }
diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/lock/exception/TableLockedException.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/lock/exception/LockSQLException.java
similarity index 69%
copy from 
shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/lock/exception/TableLockedException.java
copy to 
shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/lock/exception/LockSQLException.java
index 8b0490c01f6..530e7c9a62a 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/lock/exception/TableLockedException.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/lock/exception/LockSQLException.java
@@ -17,17 +17,19 @@
 
 package org.apache.shardingsphere.infra.lock.exception;
 
+import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.SQLState;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.kernel.KernelSQLException;
-import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
 
 /**
- * Table locked exception.
+ * Lock SQL exception.
  */
-public final class TableLockedException extends KernelSQLException {
+public abstract class LockSQLException extends KernelSQLException {
     
-    private static final long serialVersionUID = 2622020743612706932L;
+    private static final long serialVersionUID = 7889797502163128147L;
     
-    public TableLockedException(final String databaseName, final String 
schemaName, final String tableNames) {
-        super(XOpenSQLState.GENERAL_ERROR, 4000, "The table `%s` of schema 
`%s` is locked in database `%s`", tableNames, schemaName, databaseName);
+    private static final int KERNEL_CODE = 5;
+    
+    public LockSQLException(final SQLState sqlState, final int errorCode, 
final String reason, final Object... messageArguments) {
+        super(sqlState, KERNEL_CODE, errorCode, reason, messageArguments);
     }
 }
diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/lock/exception/TableLockWaitTimeoutException.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/lock/exception/TableLockWaitTimeoutException.java
index 412de1507a8..44efedbe1ff 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/lock/exception/TableLockWaitTimeoutException.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/lock/exception/TableLockWaitTimeoutException.java
@@ -17,17 +17,16 @@
 
 package org.apache.shardingsphere.infra.lock.exception;
 
-import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.kernel.KernelSQLException;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
 
 /**
  * Table lock wait timeout exception.
  */
-public final class TableLockWaitTimeoutException extends KernelSQLException {
+public final class TableLockWaitTimeoutException extends LockSQLException {
     
     private static final long serialVersionUID = 2599713085782288003L;
     
     public TableLockWaitTimeoutException(final String schemaName, final String 
tableName, final long timeoutMilliseconds) {
-        super(XOpenSQLState.GENERAL_ERROR, 4001, "The table `%s` of schema 
`%s` lock wait timeout of %s ms exceeded", tableName, schemaName, 
String.valueOf(timeoutMilliseconds));
+        super(XOpenSQLState.GENERAL_ERROR, 1, "The table `%s` of schema `%s` 
lock wait timeout of `%s` milliseconds exceeded", tableName, schemaName, 
String.valueOf(timeoutMilliseconds));
     }
 }
diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/lock/exception/TableLockedException.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/lock/exception/TableLockedException.java
index 8b0490c01f6..f877283a9b7 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/lock/exception/TableLockedException.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/lock/exception/TableLockedException.java
@@ -17,17 +17,16 @@
 
 package org.apache.shardingsphere.infra.lock.exception;
 
-import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.kernel.KernelSQLException;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
 
 /**
  * Table locked exception.
  */
-public final class TableLockedException extends KernelSQLException {
+public final class TableLockedException extends LockSQLException {
     
     private static final long serialVersionUID = 2622020743612706932L;
     
     public TableLockedException(final String databaseName, final String 
schemaName, final String tableNames) {
-        super(XOpenSQLState.GENERAL_ERROR, 4000, "The table `%s` of schema 
`%s` is locked in database `%s`", tableNames, schemaName, databaseName);
+        super(XOpenSQLState.GENERAL_ERROR, 0, "The table `%s` of schema `%s` 
is locked in database `%s`", tableNames, schemaName, databaseName);
     }
 }
diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/exception/UnsupportedActualDataNodeStructureException.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/exception/UnsupportedActualDataNodeStructureException.java
index 5a0db5592a2..412a2d81e57 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/exception/UnsupportedActualDataNodeStructureException.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/exception/UnsupportedActualDataNodeStructureException.java
@@ -18,7 +18,7 @@
 package org.apache.shardingsphere.infra.metadata.database.schema.exception;
 
 import org.apache.shardingsphere.infra.datanode.DataNode;
-import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.kernel.KernelSQLException;
+import org.apache.shardingsphere.infra.exception.MetaDataSQLException;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
 
 import java.util.Collection;
@@ -26,7 +26,7 @@ import java.util.Collection;
 /**
  * Unsupported actual data node structure exception.
  */
-public final class UnsupportedActualDataNodeStructureException extends 
KernelSQLException {
+public final class UnsupportedActualDataNodeStructureException extends 
MetaDataSQLException {
     
     private static final long serialVersionUID = -8921823916974492519L;
     
diff --git 
a/shardingsphere-infra/shardingsphere-infra-datetime/shardingsphere-infra-datetime-type/shardingsphere-database-datetime/src/main/java/org/apache/shardingsphere/datetime/database/exception/DatetimeConfigurationFileNotFoundException.java
 
b/shardingsphere-infra/shardingsphere-infra-datetime/shardingsphere-infra-datetime-type/shardingsphere-database-datetime/src/main/java/org/apache/shardingsphere/datetime/database/exception/DatetimeConfigurationFileNotFoundException.java
index 36ecfaa85de..546a530f62f 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-datetime/shardingsphere-infra-datetime-type/shardingsphere-database-datetime/src/main/java/org/apache/shardingsphere/datetime/database/exception/DatetimeConfigurationFileNotFoundException.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-datetime/shardingsphere-infra-datetime-type/shardingsphere-database-datetime/src/main/java/org/apache/shardingsphere/datetime/database/exception/DatetimeConfigurationFileNotFoundException.java
@@ -17,17 +17,17 @@
 
 package org.apache.shardingsphere.datetime.database.exception;
 
-import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.kernel.KernelSQLException;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
+import 
org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.workerid.exception.ClusterSQLException;
 
 /**
  * Datetime configuration file not found exception.
  */
-public final class DatetimeConfigurationFileNotFoundException extends 
KernelSQLException {
+public final class DatetimeConfigurationFileNotFoundException extends 
ClusterSQLException {
     
     private static final long serialVersionUID = 4820838154441059833L;
     
     public DatetimeConfigurationFileNotFoundException(final String 
configurationFile) {
-        super(XOpenSQLState.GENERAL_ERROR, 4010, "Can not find `%s` file for 
datetime initialize", configurationFile);
+        super(XOpenSQLState.GENERAL_ERROR, 2, "Can not find `%s` file for 
datetime initialize", configurationFile);
     }
 }
diff --git 
a/shardingsphere-infra/shardingsphere-infra-datetime/shardingsphere-infra-datetime-type/shardingsphere-database-datetime/src/main/java/org/apache/shardingsphere/datetime/database/exception/DatetimeLoadingException.java
 
b/shardingsphere-infra/shardingsphere-infra-datetime/shardingsphere-infra-datetime-type/shardingsphere-database-datetime/src/main/java/org/apache/shardingsphere/datetime/database/exception/DatetimeLoadingException.java
index 7447c4448c4..77fd46f23db 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-datetime/shardingsphere-infra-datetime-type/shardingsphere-database-datetime/src/main/java/org/apache/shardingsphere/datetime/database/exception/DatetimeLoadingException.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-datetime/shardingsphere-infra-datetime-type/shardingsphere-database-datetime/src/main/java/org/apache/shardingsphere/datetime/database/exception/DatetimeLoadingException.java
@@ -17,7 +17,7 @@
 
 package org.apache.shardingsphere.datetime.database.exception;
 
-import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.kernel.KernelSQLException;
+import org.apache.shardingsphere.infra.exception.ConnectionSQLException;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
 
 import java.sql.SQLException;
@@ -25,11 +25,11 @@ import java.sql.SQLException;
 /**
  * Datetime loading exception.
  */
-public final class DatetimeLoadingException extends KernelSQLException {
+public final class DatetimeLoadingException extends ConnectionSQLException {
     
     private static final long serialVersionUID = 7844267165522132993L;
     
     public DatetimeLoadingException(final SQLException cause) {
-        super(XOpenSQLState.GENERAL_ERROR, 4011, "Load datetime from database 
failed, reason: %s", cause.getMessage());
+        super(XOpenSQLState.GENERAL_ERROR, 4, "Load datetime from database 
failed, reason: %s", cause.getMessage());
     }
 }
diff --git 
a/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/exception/UnsupportedDataTypeConversionException.java
 
b/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/exception/UnsupportedDataTypeConversionException.java
index 9a02c10e8ca..1b8c3ab28af 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/exception/UnsupportedDataTypeConversionException.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/exception/UnsupportedDataTypeConversionException.java
@@ -17,7 +17,7 @@
 
 package org.apache.shardingsphere.infra.executor.exception;
 
-import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.kernel.KernelSQLException;
+import org.apache.shardingsphere.infra.exception.DataSQLException;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
 
 import java.util.Objects;
@@ -25,11 +25,11 @@ import java.util.Objects;
 /**
  * Unsupported data type conversion exception.
  */
-public final class UnsupportedDataTypeConversionException extends 
KernelSQLException {
+public final class UnsupportedDataTypeConversionException extends 
DataSQLException {
     
     private static final long serialVersionUID = 4808672149254705863L;
     
     public UnsupportedDataTypeConversionException(final Class<?> convertType, 
final Object value) {
-        super(XOpenSQLState.INVALID_DATA_TYPE, 4, "Unsupported conversion data 
type `%s` for value `%s`", convertType.getName(), Objects.toString(value));
+        super(XOpenSQLState.INVALID_DATA_TYPE, 6, "Unsupported conversion data 
type `%s` for value `%s`", convertType.getName(), Objects.toString(value));
     }
 }
diff --git 
a/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/exception/UnsupportedStreamCharsetConversionException.java
 
b/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/exception/UnsupportedStreamCharsetConversionException.java
index a16d66e20e1..9a9e45d5e81 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/exception/UnsupportedStreamCharsetConversionException.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/exception/UnsupportedStreamCharsetConversionException.java
@@ -17,13 +17,13 @@
 
 package org.apache.shardingsphere.infra.executor.exception;
 
-import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.kernel.KernelSQLException;
+import org.apache.shardingsphere.infra.exception.DataSQLException;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
 
 /**
  * Unsupported stream charset conversion exception.
  */
-public final class UnsupportedStreamCharsetConversionException extends 
KernelSQLException {
+public final class UnsupportedStreamCharsetConversionException extends 
DataSQLException {
     
     private static final long serialVersionUID = 4577091201937095156L;
     
diff --git 
a/shardingsphere-infra/shardingsphere-infra-util/src/main/java/org/apache/shardingsphere/infra/util/exception/external/sql/type/kernel/KernelSQLException.java
 
b/shardingsphere-infra/shardingsphere-infra-util/src/main/java/org/apache/shardingsphere/infra/util/exception/external/sql/type/kernel/KernelSQLException.java
index 8dd25395f1f..9992414d030 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-util/src/main/java/org/apache/shardingsphere/infra/util/exception/external/sql/type/kernel/KernelSQLException.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-util/src/main/java/org/apache/shardingsphere/infra/util/exception/external/sql/type/kernel/KernelSQLException.java
@@ -29,7 +29,11 @@ public abstract class KernelSQLException extends 
ShardingSphereSQLException {
     
     private static final int TYPE_OFFSET = 1;
     
-    public KernelSQLException(final SQLState sqlState, final int errorCode, 
final String reason, final Object... messageArguments) {
-        super(sqlState, TYPE_OFFSET, errorCode, reason, messageArguments);
+    public KernelSQLException(final SQLState sqlState, final int kernelCode, 
final int errorCode, final String reason, final Object... messageArguments) {
+        super(sqlState, TYPE_OFFSET, generateErrorCode(kernelCode, errorCode), 
reason, messageArguments);
+    }
+    
+    private static int generateErrorCode(final int kernelCode, final int 
errorCode) {
+        return (kernelCode < 10 ? kernelCode * 1000 : kernelCode * 100) + 
errorCode;
     }
 }
diff --git 
a/shardingsphere-infra/shardingsphere-infra-util/src/test/java/org/apache/shardingsphere/infra/util/exception/external/sql/type/kernel/KernelSQLExceptionTest.java
 
b/shardingsphere-infra/shardingsphere-infra-util/src/test/java/org/apache/shardingsphere/infra/util/exception/external/sql/type/kernel/KernelSQLExceptionTest.java
new file mode 100644
index 00000000000..dac6f4c837f
--- /dev/null
+++ 
b/shardingsphere-infra/shardingsphere-infra-util/src/test/java/org/apache/shardingsphere/infra/util/exception/external/sql/type/kernel/KernelSQLExceptionTest.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package 
org.apache.shardingsphere.infra.util.exception.external.sql.type.kernel;
+
+import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
+import org.junit.Test;
+
+import java.sql.SQLException;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
+public final class KernelSQLExceptionTest {
+    
+    @SuppressWarnings("serial")
+    @Test
+    public void 
assertNewKernelSQLExceptionSQLExceptionWithSingleDigitalForKernelCode() {
+        SQLException actual = new 
KernelSQLException(XOpenSQLState.GENERAL_ERROR, 1, 1, "reason") {
+        }.toSQLException();
+        assertThat(actual.getSQLState(), 
is(XOpenSQLState.GENERAL_ERROR.getValue()));
+        assertThat(actual.getErrorCode(), is(11001));
+        assertThat(actual.getMessage(), is("reason"));
+    }
+    
+    @SuppressWarnings("serial")
+    @Test
+    public void 
assertNewKernelSQLExceptionSQLExceptionWithDoubleDigitalForKernelCode() {
+        SQLException actual = new 
KernelSQLException(XOpenSQLState.GENERAL_ERROR, 99, 10, "reason") {
+        }.toSQLException();
+        assertThat(actual.getSQLState(), 
is(XOpenSQLState.GENERAL_ERROR.getValue()));
+        assertThat(actual.getErrorCode(), is(19910));
+        assertThat(actual.getMessage(), is("reason"));
+    }
+}
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/DriverRegisterException.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/DriverRegisterException.java
index d257b9fd464..d73018db73c 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/DriverRegisterException.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/DriverRegisterException.java
@@ -17,7 +17,7 @@
 
 package org.apache.shardingsphere.driver;
 
-import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.kernel.KernelSQLException;
+import org.apache.shardingsphere.infra.exception.ConnectionSQLException;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
 
 import java.sql.SQLException;
@@ -25,11 +25,11 @@ import java.sql.SQLException;
 /**
  * Driver register exception.
  */
-public final class DriverRegisterException extends KernelSQLException {
+public final class DriverRegisterException extends ConnectionSQLException {
     
     private static final long serialVersionUID = -8091239932993280564L;
     
     public DriverRegisterException(final SQLException cause) {
-        super(XOpenSQLState.GENERAL_ERROR, 100, "Can not register driver, 
reason is: %s", cause.getMessage());
+        super(XOpenSQLState.GENERAL_ERROR, 10, "Can not register driver, 
reason is: %s", cause.getMessage());
     }
 }
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/exception/ColumnIndexOutOfRangeException.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/exception/ColumnIndexOutOfRangeException.java
index 07a3d049a4f..41617a78b7a 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/exception/ColumnIndexOutOfRangeException.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/exception/ColumnIndexOutOfRangeException.java
@@ -17,17 +17,17 @@
 
 package org.apache.shardingsphere.driver.jdbc.exception;
 
-import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.kernel.KernelSQLException;
+import org.apache.shardingsphere.infra.exception.SyntaxSQLException;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
 
 /**
  * Column index out of range exception.
  */
-public final class ColumnIndexOutOfRangeException extends KernelSQLException {
+public final class ColumnIndexOutOfRangeException extends SyntaxSQLException {
     
     private static final long serialVersionUID = 3599337605134702447L;
     
     public ColumnIndexOutOfRangeException(final int columnIndex) {
-        super(XOpenSQLState.INVALID_COLUMN_NUMBER, 302, "Column index `%d` is 
out of range", columnIndex);
+        super(XOpenSQLState.INVALID_COLUMN_NUMBER, 2, "Column index `%d` is 
out of range", columnIndex);
     }
 }
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/exception/ColumnLabelNotFoundException.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/exception/ColumnLabelNotFoundException.java
index 04617cfde51..c2ea9a61804 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/exception/ColumnLabelNotFoundException.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/exception/ColumnLabelNotFoundException.java
@@ -17,17 +17,17 @@
 
 package org.apache.shardingsphere.driver.jdbc.exception;
 
-import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.kernel.KernelSQLException;
+import org.apache.shardingsphere.infra.exception.SyntaxSQLException;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
 
 /**
  * Column label not found exception.
  */
-public final class ColumnLabelNotFoundException extends KernelSQLException {
+public final class ColumnLabelNotFoundException extends SyntaxSQLException {
     
     private static final long serialVersionUID = -4634399403612501335L;
     
     public ColumnLabelNotFoundException(final String columnLabel) {
-        super(XOpenSQLState.NOT_FOUND, 303, "Can not find column label `%s`", 
columnLabel);
+        super(XOpenSQLState.NOT_FOUND, 3, "Can not find column label `%s`", 
columnLabel);
     }
 }
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/exception/ConnectionClosedException.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/exception/ConnectionClosedException.java
index eae50d4a0f6..803dc65dd8a 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/exception/ConnectionClosedException.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/exception/ConnectionClosedException.java
@@ -17,17 +17,17 @@
 
 package org.apache.shardingsphere.driver.jdbc.exception;
 
-import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.kernel.KernelSQLException;
+import org.apache.shardingsphere.infra.exception.ConnectionSQLException;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
 
 /**
  * Connection closed exception.
  */
-public final class ConnectionClosedException extends KernelSQLException {
+public final class ConnectionClosedException extends ConnectionSQLException {
     
     private static final long serialVersionUID = 8667898851939815681L;
     
     public ConnectionClosedException() {
-        super(XOpenSQLState.CONNECTION_EXCEPTION, 500, "Connection has been 
closed");
+        super(XOpenSQLState.CONNECTION_EXCEPTION, 2, "Connection has been 
closed");
     }
 }
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/exception/EmptySQLException.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/exception/EmptySQLException.java
index f3a4538492e..986c0334325 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/exception/EmptySQLException.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/exception/EmptySQLException.java
@@ -17,17 +17,17 @@
 
 package org.apache.shardingsphere.driver.jdbc.exception;
 
-import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.kernel.KernelSQLException;
+import org.apache.shardingsphere.infra.exception.SyntaxSQLException;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
 
 /**
  * Empty SQL exception.
  */
-public final class EmptySQLException extends KernelSQLException {
+public final class EmptySQLException extends SyntaxSQLException {
     
     private static final long serialVersionUID = -5723825491720138339L;
     
     public EmptySQLException() {
-        super(XOpenSQLState.GENERAL_ERROR, 6, "SQL String can not be NULL or 
empty");
+        super(XOpenSQLState.GENERAL_ERROR, 10, "SQL String can not be NULL or 
empty");
     }
 }
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/exception/JDBCTransactionAcrossDatabasesException.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/exception/JDBCTransactionAcrossDatabasesException.java
index 4746667eb4f..24a80a061d1 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/exception/JDBCTransactionAcrossDatabasesException.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/exception/JDBCTransactionAcrossDatabasesException.java
@@ -17,17 +17,17 @@
 
 package org.apache.shardingsphere.driver.jdbc.exception;
 
-import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.kernel.KernelSQLException;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
+import org.apache.shardingsphere.transaction.exception.TransactionSQLException;
 
 /**
  * JDBC transaction across databases exception.
  */
-public final class JDBCTransactionAcrossDatabasesException extends 
KernelSQLException {
+public final class JDBCTransactionAcrossDatabasesException extends 
TransactionSQLException {
     
     private static final long serialVersionUID = 3294968323117604702L;
     
     public JDBCTransactionAcrossDatabasesException() {
-        super(XOpenSQLState.INVALID_TRANSACTION_STATE, 1321, "JDBC does not 
support operations across multiple logical databases in transaction");
+        super(XOpenSQLState.INVALID_TRANSACTION_STATE, 3, "JDBC does not 
support operations across multiple logical databases in transaction");
     }
 }
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/exception/ResultSetClosedException.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/exception/ResultSetClosedException.java
index e75a3a6c604..997f5b9590a 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/exception/ResultSetClosedException.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/exception/ResultSetClosedException.java
@@ -17,17 +17,17 @@
 
 package org.apache.shardingsphere.driver.jdbc.exception;
 
-import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.kernel.KernelSQLException;
+import org.apache.shardingsphere.infra.exception.ConnectionSQLException;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
 
 /**
  * Result set closed exception.
  */
-public final class ResultSetClosedException extends KernelSQLException {
+public final class ResultSetClosedException extends ConnectionSQLException {
     
     private static final long serialVersionUID = 3931974854134322934L;
     
     public ResultSetClosedException() {
-        super(XOpenSQLState.CONNECTION_EXCEPTION, 501, "Result set has been 
closed");
+        super(XOpenSQLState.CONNECTION_EXCEPTION, 3, "Result set has been 
closed");
     }
 }
diff --git 
a/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/core/exception/CreateTableSQLGenerateException.java
 
b/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/core/exception/CreateTableSQLGenerateException.java
index 50f0c0a9290..e5fe14a5e74 100644
--- 
a/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/core/exception/CreateTableSQLGenerateException.java
+++ 
b/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/core/exception/CreateTableSQLGenerateException.java
@@ -17,17 +17,16 @@
 
 package org.apache.shardingsphere.data.pipeline.core.exception;
 
-import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.kernel.KernelSQLException;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
 
 /**
  * Create table SQL generate exception.
  */
-public final class CreateTableSQLGenerateException extends KernelSQLException {
+public final class CreateTableSQLGenerateException extends 
PipelineSQLException {
     
     private static final long serialVersionUID = -219467568498936298L;
     
     public CreateTableSQLGenerateException(final String tableName) {
-        super(XOpenSQLState.GENERAL_ERROR, 6001, "Failed to get DDL for table 
`%s`", tableName);
+        super(XOpenSQLState.GENERAL_ERROR, 1, "Failed to get DDL for table 
`%s`", tableName);
     }
 }
diff --git 
a/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/core/exception/PipelineJobNotFoundException.java
 
b/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/core/exception/PipelineJobNotFoundException.java
index 5954c2ec030..0471f374841 100644
--- 
a/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/core/exception/PipelineJobNotFoundException.java
+++ 
b/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/core/exception/PipelineJobNotFoundException.java
@@ -17,17 +17,16 @@
 
 package org.apache.shardingsphere.data.pipeline.core.exception;
 
-import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.kernel.KernelSQLException;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
 
 /**
  * Pipeline job not found exception.
  */
-public final class PipelineJobNotFoundException extends KernelSQLException {
+public final class PipelineJobNotFoundException extends PipelineSQLException {
     
     private static final long serialVersionUID = -903289953649758722L;
     
     public PipelineJobNotFoundException(final String jobId) {
-        super(XOpenSQLState.GENERAL_ERROR, 6000, "Can not find pipeline job 
`%s`", jobId);
+        super(XOpenSQLState.GENERAL_ERROR, 0, "Can not find pipeline job 
`%s`", jobId);
     }
 }
diff --git 
a/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/core/exception/CreateTableSQLGenerateException.java
 
b/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/core/exception/PipelineSQLException.java
similarity index 70%
copy from 
shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/core/exception/CreateTableSQLGenerateException.java
copy to 
shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/core/exception/PipelineSQLException.java
index 50f0c0a9290..0126ee4c20c 100644
--- 
a/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/core/exception/CreateTableSQLGenerateException.java
+++ 
b/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/core/exception/PipelineSQLException.java
@@ -17,17 +17,19 @@
 
 package org.apache.shardingsphere.data.pipeline.core.exception;
 
+import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.SQLState;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.kernel.KernelSQLException;
-import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
 
 /**
- * Create table SQL generate exception.
+ * Pipeline SQL exception.
  */
-public final class CreateTableSQLGenerateException extends KernelSQLException {
+public abstract class PipelineSQLException extends KernelSQLException {
     
-    private static final long serialVersionUID = -219467568498936298L;
+    private static final long serialVersionUID = 139616805450096292L;
     
-    public CreateTableSQLGenerateException(final String tableName) {
-        super(XOpenSQLState.GENERAL_ERROR, 6001, "Failed to get DDL for table 
`%s`", tableName);
+    private static final int KERNEL_CODE = 8;
+    
+    public PipelineSQLException(final SQLState sqlState, final int errorCode, 
final String reason, final Object... messageArguments) {
+        super(sqlState, KERNEL_CODE, errorCode, reason, messageArguments);
     }
 }
diff --git 
a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/exception/DropNotEmptySchemaException.java
 
b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/exception/DropNotEmptySchemaException.java
index d0acc8ff46e..3f76d58d491 100644
--- 
a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/exception/DropNotEmptySchemaException.java
+++ 
b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/exception/DropNotEmptySchemaException.java
@@ -17,17 +17,17 @@
 
 package org.apache.shardingsphere.singletable.exception;
 
-import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.kernel.KernelSQLException;
+import org.apache.shardingsphere.infra.exception.MetaDataSQLException;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
 
 /**
  * Drop not empty schema exception.
  */
-public final class DropNotEmptySchemaException extends KernelSQLException {
+public final class DropNotEmptySchemaException extends MetaDataSQLException {
     
     private static final long serialVersionUID = 5285619119572894557L;
     
     public DropNotEmptySchemaException(final String schemaName) {
-        super(XOpenSQLState.FEATURE_NOT_SUPPORTED, 7003, "Can not drop schema 
`%s` because of contains tables", schemaName);
+        super(XOpenSQLState.FEATURE_NOT_SUPPORTED, 23, "Can not drop schema 
`%s` because of contains tables", schemaName);
     }
 }
diff --git 
a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/exception/SchemaNotFoundException.java
 
b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/exception/SchemaNotFoundException.java
index 86efd89808d..5c2825b22b3 100644
--- 
a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/exception/SchemaNotFoundException.java
+++ 
b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/exception/SchemaNotFoundException.java
@@ -17,17 +17,17 @@
 
 package org.apache.shardingsphere.singletable.exception;
 
-import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.kernel.KernelSQLException;
+import org.apache.shardingsphere.infra.exception.MetaDataSQLException;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
 
 /**
  * Schema not found exception.
  */
-public final class SchemaNotFoundException extends KernelSQLException {
+public final class SchemaNotFoundException extends MetaDataSQLException {
     
     private static final long serialVersionUID = 2722045034640737328L;
     
     public SchemaNotFoundException(final String schemaName) {
-        super(XOpenSQLState.NOT_FOUND, 7001, "Schema `%s` does not exist", 
schemaName);
+        super(XOpenSQLState.NOT_FOUND, 21, "Schema `%s` does not exist", 
schemaName);
     }
 }
diff --git 
a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/exception/SingleTableNotFoundException.java
 
b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/exception/SingleTableNotFoundException.java
index 056df55e54a..2d8705d9595 100644
--- 
a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/exception/SingleTableNotFoundException.java
+++ 
b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/exception/SingleTableNotFoundException.java
@@ -17,17 +17,17 @@
 
 package org.apache.shardingsphere.singletable.exception;
 
-import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.kernel.KernelSQLException;
+import org.apache.shardingsphere.infra.exception.MetaDataSQLException;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
 
 /**
  * Single table not found exception.
  */
-public final class SingleTableNotFoundException extends KernelSQLException {
+public final class SingleTableNotFoundException extends MetaDataSQLException {
     
     private static final long serialVersionUID = 3498790429190415298L;
     
     public SingleTableNotFoundException(final String tableName) {
-        super(XOpenSQLState.NOT_FOUND, 7000, "Single table `%s` does not 
exist", tableName);
+        super(XOpenSQLState.NOT_FOUND, 20, "Single table `%s` does not exist", 
tableName);
     }
 }
diff --git 
a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/exception/SingleTablesLoadingException.java
 
b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/exception/SingleTablesLoadingException.java
index f1c10b7e0c1..1b1af3dccc6 100644
--- 
a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/exception/SingleTablesLoadingException.java
+++ 
b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/exception/SingleTablesLoadingException.java
@@ -17,7 +17,7 @@
 
 package org.apache.shardingsphere.singletable.exception;
 
-import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.kernel.KernelSQLException;
+import org.apache.shardingsphere.infra.exception.MetaDataSQLException;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
 
 import java.sql.SQLException;
@@ -25,11 +25,11 @@ import java.sql.SQLException;
 /**
  * Single tables loading exception.
  */
-public final class SingleTablesLoadingException extends KernelSQLException {
+public final class SingleTablesLoadingException extends MetaDataSQLException {
     
     private static final long serialVersionUID = 698261896187918188L;
     
     public SingleTablesLoadingException(final String databaseName, final 
String dataSourceName, final SQLException cause) {
-        super(XOpenSQLState.GENERAL_ERROR, 7002, "Can not load table with 
database name `%s` and data source name `%s`, reason is: %s", databaseName, 
dataSourceName, cause.getMessage());
+        super(XOpenSQLState.GENERAL_ERROR, 22, "Can not load table with 
database name `%s` and data source name `%s`, reason is: %s", databaseName, 
dataSourceName, cause.getMessage());
     }
 }
diff --git 
a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/exception/UnsupportedDropCascadeTableException.java
 
b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/exception/UnsupportedDropCascadeTableException.java
index dc61e696ab6..9b0803f188a 100644
--- 
a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/exception/UnsupportedDropCascadeTableException.java
+++ 
b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/exception/UnsupportedDropCascadeTableException.java
@@ -17,17 +17,17 @@
 
 package org.apache.shardingsphere.singletable.exception;
 
-import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.kernel.KernelSQLException;
+import org.apache.shardingsphere.infra.exception.SyntaxSQLException;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
 
 /**
  * Unsupported drop cascade table exception.
  */
-public final class UnsupportedDropCascadeTableException extends 
KernelSQLException {
+public final class UnsupportedDropCascadeTableException extends 
SyntaxSQLException {
     
     private static final long serialVersionUID = -5995575055241171117L;
     
     public UnsupportedDropCascadeTableException() {
-        super(XOpenSQLState.FEATURE_NOT_SUPPORTED, 7010, "DROP TABLE ... 
CASCADE is not supported");
+        super(XOpenSQLState.FEATURE_NOT_SUPPORTED, 4, "DROP TABLE ... CASCADE 
is not supported");
     }
 }
diff --git 
a/shardingsphere-kernel/shardingsphere-sql-federation/shardingsphere-sql-federation-optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/converter/exception/OptimizationSQLNodeConvertException.java
 
b/shardingsphere-kernel/shardingsphere-sql-federation/shardingsphere-sql-federation-optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/converter/exception/OptimizationSQLNodeConvertException.java
index 892a58ed479..8edae77de35 100644
--- 
a/shardingsphere-kernel/shardingsphere-sql-federation/shardingsphere-sql-federation-optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/converter/exception/OptimizationSQLNodeConvertException.java
+++ 
b/shardingsphere-kernel/shardingsphere-sql-federation/shardingsphere-sql-federation-optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/converter/exception/OptimizationSQLNodeConvertException.java
@@ -17,14 +17,14 @@
 
 package org.apache.shardingsphere.sqlfederation.optimizer.converter.exception;
 
-import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.kernel.KernelSQLException;
+import org.apache.shardingsphere.infra.exception.MetaDataSQLException;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
 import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
 
 /**
  * Optimization SQL node convert exception.
  */
-public final class OptimizationSQLNodeConvertException extends 
KernelSQLException {
+public final class OptimizationSQLNodeConvertException extends 
MetaDataSQLException {
     
     private static final long serialVersionUID = -5486229929620713984L;
     
diff --git 
a/shardingsphere-kernel/shardingsphere-transaction/shardingsphere-transaction-core/src/main/java/org/apache/shardingsphere/transaction/exception/SwitchTypeInTransactionException.java
 
b/shardingsphere-kernel/shardingsphere-transaction/shardingsphere-transaction-core/src/main/java/org/apache/shardingsphere/transaction/exception/SwitchTypeInTransactionException.java
index fe5a3a2c54a..d613b8a12d0 100644
--- 
a/shardingsphere-kernel/shardingsphere-transaction/shardingsphere-transaction-core/src/main/java/org/apache/shardingsphere/transaction/exception/SwitchTypeInTransactionException.java
+++ 
b/shardingsphere-kernel/shardingsphere-transaction/shardingsphere-transaction-core/src/main/java/org/apache/shardingsphere/transaction/exception/SwitchTypeInTransactionException.java
@@ -17,17 +17,16 @@
 
 package org.apache.shardingsphere.transaction.exception;
 
-import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.kernel.KernelSQLException;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
 
 /**
  * Switch type in transaction exception.
  */
-public final class SwitchTypeInTransactionException extends KernelSQLException 
{
+public final class SwitchTypeInTransactionException extends 
TransactionSQLException {
     
     private static final long serialVersionUID = 5333976223578960845L;
     
     public SwitchTypeInTransactionException() {
-        super(XOpenSQLState.INVALID_TRANSACTION_STATE, 1320, "Switch 
transaction type failed, please terminate the current transaction");
+        super(XOpenSQLState.INVALID_TRANSACTION_STATE, 0, "Switch transaction 
type failed, please terminate the current transaction");
     }
 }
diff --git 
a/shardingsphere-kernel/shardingsphere-transaction/shardingsphere-transaction-core/src/main/java/org/apache/shardingsphere/transaction/exception/StartNestedXATransactionException.java
 
b/shardingsphere-kernel/shardingsphere-transaction/shardingsphere-transaction-core/src/main/java/org/apache/shardingsphere/transaction/exception/TransactionSQLException.java
similarity index 69%
copy from 
shardingsphere-kernel/shardingsphere-transaction/shardingsphere-transaction-core/src/main/java/org/apache/shardingsphere/transaction/exception/StartNestedXATransactionException.java
copy to 
shardingsphere-kernel/shardingsphere-transaction/shardingsphere-transaction-core/src/main/java/org/apache/shardingsphere/transaction/exception/TransactionSQLException.java
index 00f1f19ae4d..50cfad1f4cb 100644
--- 
a/shardingsphere-kernel/shardingsphere-transaction/shardingsphere-transaction-core/src/main/java/org/apache/shardingsphere/transaction/exception/StartNestedXATransactionException.java
+++ 
b/shardingsphere-kernel/shardingsphere-transaction/shardingsphere-transaction-core/src/main/java/org/apache/shardingsphere/transaction/exception/TransactionSQLException.java
@@ -17,17 +17,19 @@
 
 package org.apache.shardingsphere.transaction.exception;
 
+import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.SQLState;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.kernel.KernelSQLException;
-import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
 
 /**
- * Start nested XA transaction exception.
+ * Transaction SQL exception.
  */
-public final class StartNestedXATransactionException extends 
KernelSQLException {
+public abstract class TransactionSQLException extends KernelSQLException {
     
-    private static final long serialVersionUID = 7761100591709104351L;
+    private static final long serialVersionUID = 1340041110360641483L;
     
-    public StartNestedXATransactionException() {
-        super(XOpenSQLState.INVALID_TRANSACTION_STATE, 1323, "Can not start 
new XA transaction in a active transaction");
+    private static final int KERNEL_CODE = 4;
+    
+    public TransactionSQLException(final SQLState sqlState, final int 
errorCode, final String reason, final Object... messageArguments) {
+        super(sqlState, KERNEL_CODE, errorCode, reason, messageArguments);
     }
 }
diff --git 
a/shardingsphere-kernel/shardingsphere-transaction/shardingsphere-transaction-type/shardingsphere-transaction-xa/shardingsphere-transaction-xa-core/src/main/java/org/apache/shardingsphere/transaction/xa/jta/datasource/swapper/DataSourceSwapper.java
 
b/shardingsphere-kernel/shardingsphere-transaction/shardingsphere-transaction-type/shardingsphere-transaction-xa/shardingsphere-transaction-xa-core/src/main/java/org/apache/shardingsphere/transaction/xa/jta/datasource/swapper/DataSou
 [...]
index c414fb8fd81..9eb38ab2fe3 100644
--- 
a/shardingsphere-kernel/shardingsphere-transaction/shardingsphere-transaction-type/shardingsphere-transaction-xa/shardingsphere-transaction-xa-core/src/main/java/org/apache/shardingsphere/transaction/xa/jta/datasource/swapper/DataSourceSwapper.java
+++ 
b/shardingsphere-kernel/shardingsphere-transaction/shardingsphere-transaction-type/shardingsphere-transaction-xa/shardingsphere-transaction-xa-core/src/main/java/org/apache/shardingsphere/transaction/xa/jta/datasource/swapper/DataSourceSwapper.java
@@ -21,6 +21,7 @@ import com.google.common.base.CaseFormat;
 import lombok.RequiredArgsConstructor;
 import lombok.SneakyThrows;
 import 
org.apache.shardingsphere.transaction.xa.jta.datasource.properties.XADataSourceDefinition;
+import 
org.apache.shardingsphere.transaction.xa.jta.exception.XADataSourceInitializeException;
 
 import javax.sql.DataSource;
 import javax.sql.XADataSource;
diff --git 
a/shardingsphere-kernel/shardingsphere-transaction/shardingsphere-transaction-type/shardingsphere-transaction-xa/shardingsphere-transaction-xa-core/src/main/java/org/apache/shardingsphere/transaction/xa/jta/datasource/swapper/XADataSourceInitializeException.java
 
b/shardingsphere-kernel/shardingsphere-transaction/shardingsphere-transaction-type/shardingsphere-transaction-xa/shardingsphere-transaction-xa-core/src/main/java/org/apache/shardingsphere/transaction/xa/jta/exception/XA
 [...]
similarity index 76%
rename from 
shardingsphere-kernel/shardingsphere-transaction/shardingsphere-transaction-type/shardingsphere-transaction-xa/shardingsphere-transaction-xa-core/src/main/java/org/apache/shardingsphere/transaction/xa/jta/datasource/swapper/XADataSourceInitializeException.java
rename to 
shardingsphere-kernel/shardingsphere-transaction/shardingsphere-transaction-type/shardingsphere-transaction-xa/shardingsphere-transaction-xa-core/src/main/java/org/apache/shardingsphere/transaction/xa/jta/exception/XADataSourceInitializeException.java
index 6dfcb2c145c..d37cd7d76b9 100644
--- 
a/shardingsphere-kernel/shardingsphere-transaction/shardingsphere-transaction-type/shardingsphere-transaction-xa/shardingsphere-transaction-xa-core/src/main/java/org/apache/shardingsphere/transaction/xa/jta/datasource/swapper/XADataSourceInitializeException.java
+++ 
b/shardingsphere-kernel/shardingsphere-transaction/shardingsphere-transaction-type/shardingsphere-transaction-xa/shardingsphere-transaction-xa-core/src/main/java/org/apache/shardingsphere/transaction/xa/jta/exception/XADataSourceInitializeException.java
@@ -15,20 +15,20 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.transaction.xa.jta.datasource.swapper;
+package org.apache.shardingsphere.transaction.xa.jta.exception;
 
-import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.kernel.KernelSQLException;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
+import org.apache.shardingsphere.transaction.exception.TransactionSQLException;
 import 
org.apache.shardingsphere.transaction.xa.jta.datasource.properties.XADataSourceDefinition;
 
 /**
  * XA data source initialize exception.
  */
-public final class XADataSourceInitializeException extends KernelSQLException {
+public final class XADataSourceInitializeException extends 
TransactionSQLException {
     
     private static final long serialVersionUID = -4515239569528215614L;
     
     public XADataSourceInitializeException(final XADataSourceDefinition 
xaDataSourceDefinition) {
-        super(XOpenSQLState.INVALID_TRANSACTION_STATE, 1322, "Failed to create 
`%s` XA data source", xaDataSourceDefinition.getType());
+        super(XOpenSQLState.INVALID_TRANSACTION_STATE, 2, "Failed to create 
`%s` XA data source", xaDataSourceDefinition.getType());
     }
 }
diff --git 
a/shardingsphere-kernel/shardingsphere-transaction/shardingsphere-transaction-core/src/main/java/org/apache/shardingsphere/transaction/exception/StartNestedXATransactionException.java
 
b/shardingsphere-kernel/shardingsphere-transaction/shardingsphere-transaction-type/shardingsphere-transaction-xa/shardingsphere-transaction-xa-core/src/main/java/org/apache/shardingsphere/transaction/xa/jta/exception/XATransactionNestedBeginException.java
similarity index 68%
rename from 
shardingsphere-kernel/shardingsphere-transaction/shardingsphere-transaction-core/src/main/java/org/apache/shardingsphere/transaction/exception/StartNestedXATransactionException.java
rename to 
shardingsphere-kernel/shardingsphere-transaction/shardingsphere-transaction-type/shardingsphere-transaction-xa/shardingsphere-transaction-xa-core/src/main/java/org/apache/shardingsphere/transaction/xa/jta/exception/XATransactionNestedBeginException.java
index 00f1f19ae4d..a8111d3258f 100644
--- 
a/shardingsphere-kernel/shardingsphere-transaction/shardingsphere-transaction-core/src/main/java/org/apache/shardingsphere/transaction/exception/StartNestedXATransactionException.java
+++ 
b/shardingsphere-kernel/shardingsphere-transaction/shardingsphere-transaction-type/shardingsphere-transaction-xa/shardingsphere-transaction-xa-core/src/main/java/org/apache/shardingsphere/transaction/xa/jta/exception/XATransactionNestedBeginException.java
@@ -15,19 +15,19 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.transaction.exception;
+package org.apache.shardingsphere.transaction.xa.jta.exception;
 
-import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.kernel.KernelSQLException;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
+import org.apache.shardingsphere.transaction.exception.TransactionSQLException;
 
 /**
- * Start nested XA transaction exception.
+ * XA transaction nested begin exception.
  */
-public final class StartNestedXATransactionException extends 
KernelSQLException {
+public final class XATransactionNestedBeginException extends 
TransactionSQLException {
     
     private static final long serialVersionUID = 7761100591709104351L;
     
-    public StartNestedXATransactionException() {
-        super(XOpenSQLState.INVALID_TRANSACTION_STATE, 1323, "Can not start 
new XA transaction in a active transaction");
+    public XATransactionNestedBeginException() {
+        super(XOpenSQLState.INVALID_TRANSACTION_STATE, 1, "Can not start new 
XA transaction in a active transaction");
     }
 }
diff --git 
a/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/workerid/exception/WorkIdAssignedException.java
 
b/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/workerid/exception/ClusterSQLException.java
similarity index 70%
copy from 
shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/workerid/exception/WorkIdAssignedException.java
copy to 
shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/workerid/exception/ClusterSQLException.java
index c3021839cf2..37b4d09e62e 100644
--- 
a/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/workerid/exception/WorkIdAssignedException.java
+++ 
b/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/workerid/exception/ClusterSQLException.java
@@ -17,17 +17,19 @@
 
 package 
org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.workerid.exception;
 
+import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.SQLState;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.kernel.KernelSQLException;
-import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
 
 /**
- * Work id assigned exception.
+ * Cluster SQL exception.
  */
-public final class WorkIdAssignedException extends KernelSQLException {
+public abstract class ClusterSQLException extends KernelSQLException {
     
-    private static final long serialVersionUID = 4782736481041926266L;
+    private static final long serialVersionUID = -2839102961922546497L;
     
-    public WorkIdAssignedException() {
-        super(XOpenSQLState.GENERAL_ERROR, 5000, "Work ID assigned failed, 
which can not exceed 1024");
+    private static final int KERNEL_CODE = 7;
+    
+    public ClusterSQLException(final SQLState sqlState, final int errorCode, 
final String reason, final Object... messageArguments) {
+        super(sqlState, KERNEL_CODE, errorCode, reason, messageArguments);
     }
 }
diff --git 
a/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/workerid/exception/WorkIdAssignedException.java
 
b/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/workerid/exception/WorkIdAssignedException.java
index c3021839cf2..a284e44887c 100644
--- 
a/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/workerid/exception/WorkIdAssignedException.java
+++ 
b/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/workerid/exception/WorkIdAssignedException.java
@@ -17,17 +17,16 @@
 
 package 
org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.workerid.exception;
 
-import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.kernel.KernelSQLException;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
 
 /**
  * Work id assigned exception.
  */
-public final class WorkIdAssignedException extends KernelSQLException {
+public final class WorkIdAssignedException extends ClusterSQLException {
     
     private static final long serialVersionUID = 4782736481041926266L;
     
     public WorkIdAssignedException() {
-        super(XOpenSQLState.GENERAL_ERROR, 5000, "Work ID assigned failed, 
which can not exceed 1024");
+        super(XOpenSQLState.GENERAL_ERROR, 0, "Work ID assigned failed, which 
can not exceed 1024");
     }
 }
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/exception/FileIOException.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/exception/FileIOException.java
index 2596dbfd5d6..a12a5a995d5 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/exception/FileIOException.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/exception/FileIOException.java
@@ -17,19 +17,19 @@
 
 package org.apache.shardingsphere.proxy.backend.exception;
 
-import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.kernel.KernelSQLException;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
+import 
org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.workerid.exception.ClusterSQLException;
 
 import java.io.IOException;
 
 /**
  * File IO exception.
  */
-public final class FileIOException extends KernelSQLException {
+public final class FileIOException extends ClusterSQLException {
     
     private static final long serialVersionUID = 1104839422339487793L;
     
     public FileIOException(final IOException cause) {
-        super(XOpenSQLState.GENERAL_ERROR, 1004, "File access failed, reason 
is: %s", cause.getMessage());
+        super(XOpenSQLState.GENERAL_ERROR, 2, "File access failed, reason is: 
%s", cause.getMessage());
     }
 }
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/exception/InvalidValueException.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/exception/InvalidValueException.java
index 970a6583307..dd6b621b49b 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/exception/InvalidValueException.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/exception/InvalidValueException.java
@@ -17,17 +17,17 @@
 
 package org.apache.shardingsphere.proxy.backend.exception;
 
-import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.kernel.KernelSQLException;
+import org.apache.shardingsphere.infra.exception.DataSQLException;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
 
 /**
  * Invalid value exception.
  */
-public final class InvalidValueException extends KernelSQLException {
+public final class InvalidValueException extends DataSQLException {
     
     private static final long serialVersionUID = 1840341880422454371L;
     
     public InvalidValueException(final String value) {
-        super(XOpenSQLState.INVALID_DATA_TYPE, 301, "Invalid value `%s`", 
value);
+        super(XOpenSQLState.INVALID_DATA_TYPE, 1, "Invalid value `%s`", value);
     }
 }
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/exception/ResourceNotExistedException.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/exception/ResourceNotExistedException.java
index 2acac9fc32a..4e67c921620 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/exception/ResourceNotExistedException.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/exception/ResourceNotExistedException.java
@@ -17,17 +17,17 @@
 
 package org.apache.shardingsphere.proxy.backend.exception;
 
-import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.kernel.KernelSQLException;
+import org.apache.shardingsphere.infra.exception.MetaDataSQLException;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
 
 /**
  * Resource does not exist exception.
  */
-public final class ResourceNotExistedException extends KernelSQLException {
+public final class ResourceNotExistedException extends MetaDataSQLException {
     
     private static final long serialVersionUID = 4146100333670404924L;
     
     public ResourceNotExistedException() {
-        super(XOpenSQLState.SYNTAX_ERROR, 1002, "Resource does not exist");
+        super(XOpenSQLState.SYNTAX_ERROR, 12, "Resource does not exist");
     }
 }
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/exception/RuleNotExistedException.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/exception/RuleNotExistedException.java
index 22f323288f1..1f53e7639e1 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/exception/RuleNotExistedException.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/exception/RuleNotExistedException.java
@@ -17,17 +17,17 @@
 
 package org.apache.shardingsphere.proxy.backend.exception;
 
-import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.kernel.KernelSQLException;
+import org.apache.shardingsphere.infra.exception.MetaDataSQLException;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
 
 /**
  * Rule does not exist exception.
  */
-public final class RuleNotExistedException extends KernelSQLException {
+public final class RuleNotExistedException extends MetaDataSQLException {
     
     private static final long serialVersionUID = -4150905802300104824L;
     
     public RuleNotExistedException() {
-        super(XOpenSQLState.SYNTAX_ERROR, 1003, "Rule does not exist");
+        super(XOpenSQLState.SYNTAX_ERROR, 13, "Rule does not exist");
     }
 }
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/exception/UnsupportedVariableException.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/exception/UnsupportedVariableException.java
index e2c8cd3ae9a..c0b543304ad 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/exception/UnsupportedVariableException.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/exception/UnsupportedVariableException.java
@@ -17,17 +17,17 @@
 
 package org.apache.shardingsphere.proxy.backend.exception;
 
-import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.kernel.KernelSQLException;
+import org.apache.shardingsphere.infra.exception.SyntaxSQLException;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
 
 /**
  * Unsupported variable exception.
  */
-public final class UnsupportedVariableException extends KernelSQLException {
+public final class UnsupportedVariableException extends SyntaxSQLException {
     
     private static final long serialVersionUID = 1955281568807066737L;
     
     public UnsupportedVariableException(final String variable) {
-        super(XOpenSQLState.GENERAL_ERROR, 301, "Could not support variable 
`%s`", variable);
+        super(XOpenSQLState.GENERAL_ERROR, 5, "Could not support variable 
`%s`", variable);
     }
 }
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/transaction/TransactionXAHandler.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/transaction/TransactionXAHandler.java
index d584f1256b9..9e51083b833 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/transaction/TransactionXAHandler.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/transaction/TransactionXAHandler.java
@@ -29,7 +29,7 @@ import 
org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader;
 import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.tcl.TCLStatement;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.tcl.XAStatement;
-import 
org.apache.shardingsphere.transaction.exception.StartNestedXATransactionException;
+import 
org.apache.shardingsphere.transaction.xa.jta.exception.XATransactionNestedBeginException;
 
 import java.sql.SQLException;
 import java.sql.SQLFeatureNotSupportedException;
@@ -74,7 +74,7 @@ public final class TransactionXAHandler implements 
ProxyBackendHandler {
                  * we have to let session occupy the thread when doing xa 
transaction. according to 
https://dev.mysql.com/doc/refman/5.7/en/xa-states.html XA and local 
transactions are mutually
                  * exclusive
                  */
-                
ShardingSpherePreconditions.checkState(!connectionSession.getTransactionStatus().isInTransaction(),
 new StartNestedXATransactionException());
+                
ShardingSpherePreconditions.checkState(!connectionSession.getTransactionStatus().isInTransaction(),
 new XATransactionNestedBeginException());
                 ResponseHeader header = backendHandler.execute();
                 
connectionSession.getConnectionContext().getTransactionConnectionContext().setInTransaction(true);
                 return header;
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-core/src/main/java/org/apache/shardingsphere/proxy/frontend/exception/CircuitBreakException.java
 
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-core/src/main/java/org/apache/shardingsphere/proxy/frontend/exception/CircuitBreakException.java
index 985c8c947ad..4c6ab166198 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-core/src/main/java/org/apache/shardingsphere/proxy/frontend/exception/CircuitBreakException.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-core/src/main/java/org/apache/shardingsphere/proxy/frontend/exception/CircuitBreakException.java
@@ -17,13 +17,13 @@
 
 package org.apache.shardingsphere.proxy.frontend.exception;
 
-import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.kernel.KernelSQLException;
+import org.apache.shardingsphere.infra.exception.ConnectionSQLException;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
 
 /**
  * Circuit break exception.
  */
-public final class CircuitBreakException extends KernelSQLException {
+public final class CircuitBreakException extends ConnectionSQLException {
     
     private static final long serialVersionUID = 6339672680026286798L;
     
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/err/MySQLErrPacketFactoryTest.java
 
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/err/MySQLErrPacketFactoryTest.java
index b71c822fcd6..1580026cbea 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/err/MySQLErrPacketFactoryTest.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/err/MySQLErrPacketFactoryTest.java
@@ -53,7 +53,7 @@ public final class MySQLErrPacketFactoryTest {
     public void assertNewInstanceWithShardingSphereSQLException() {
         MySQLErrPacket actual = MySQLErrPacketFactory.newInstance(new 
CircuitBreakException());
         assertThat(actual.getSequenceId(), is(1));
-        assertThat(actual.getErrorCode(), is(10000));
+        assertThat(actual.getErrorCode(), is(13000));
         assertThat(actual.getSqlState(), 
is(XOpenSQLState.GENERAL_WARNING.getValue()));
         assertThat(actual.getErrorMessage(), is("Circuit break open, the 
request has been ignored"));
     }
diff --git 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/exception/SQLParsingException.java
 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/exception/SQLParsingException.java
index d6dd33a678b..bfdb9a2511e 100644
--- 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/exception/SQLParsingException.java
+++ 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/exception/SQLParsingException.java
@@ -27,7 +27,9 @@ public final class SQLParsingException extends 
KernelSQLException {
     
     private static final long serialVersionUID = -6408790652103666096L;
     
+    private static final int KERNEL_CODE = 2;
+    
     public SQLParsingException(final String sql) {
-        super(XOpenSQLState.SYNTAX_ERROR, 1000, "You have an error in your SQL 
syntax: %s", sql);
+        super(XOpenSQLState.SYNTAX_ERROR, KERNEL_CODE, 0, "You have an error 
in your SQL syntax: %s", sql);
     }
 }

Reply via email to