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

wuweijie pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new 8667e1b3d20 Add RuleAndStorageMetaDataMismatchedException (#30854)
8667e1b3d20 is described below

commit 8667e1b3d20f3e7ffc1609ce9bdbe13e36841c57
Author: Liang Zhang <zhangli...@apache.org>
AuthorDate: Thu Apr 11 23:52:44 2024 +0800

    Add RuleAndStorageMetaDataMismatchedException (#30854)
---
 .../user-manual/error-code/sql-error-code.cn.md    | 10 ++---
 .../user-manual/error-code/sql-error-code.en.md    | 10 ++---
 .../DuplicateSharingActualDataNodeException.java   |  2 +-
 ...InconsistentShardingTableMetaDataException.java | 45 ----------------------
 .../metadata/InvalidBindingTablesException.java    |  2 +-
 ...nvalidShardingStrategyConfigCountException.java |  2 +-
 ...singRequiredShardingConfigurationException.java |  4 +-
 .../ShardingSchemaTableAggregationReviser.java     | 15 ++++++--
 .../RuleAndStorageMetaDataMismatchedException.java | 14 +++----
 9 files changed, 34 insertions(+), 70 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 4226fccd2a0..d16182927c4 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
@@ -18,6 +18,7 @@ SQL 错误码以标准的 SQL State,Vendor Code 和详细错误信息提供,
 | 10001       | 42S02     | Schema '%s' does not exist.                        
                                 |
 | 10002       | 42S02     | Table or view '%s' does not exist.                 
                                 |
 | 10003       | 42S02     | Unknown column '%s' in '%s'.                       
                                 |
+| 10010       | HY000     | Rule and storage meta data mismatched, reason is: 
%s.                               |
 | 10100       | HY000     | Can not %s storage units '%s'.                     
                                 |
 | 10101       | 42S02     | There is no storage unit in database '%s'.         
                                 |
 | 10102       | 44000     | Storage units '%s' do not exist in database '%s'.  
                                 |
@@ -139,7 +140,7 @@ SQL 错误码以标准的 SQL State,Vendor Code 和详细错误信息提供,
 
 | Vendor Code | SQL State | 错误信息                                               
                                                                                
 |
 
|-------------|-----------|-------------------------------------------------------------------------------------------------------------------------------------|
-| 20000       | 44000     | Can not get uniformed table structure for logic 
table '%s', it has different meta data of actual tables are as follows: %s      
    |
+| 20000       | 42S02     | %s configuration does not exist in database '%s'.  
                                                                                
 |
 | 20001       | 42S02     | Can not find table rule with logic tables '%s'.    
                                                                                
 |
 | 20002       | 42S02     | Can not find data source in sharding rule, invalid 
actual data node '%s'.                                                          
 |
 | 20003       | 42S02     | Data nodes is required for sharding table '%s'.    
                                                                                
 |
@@ -149,10 +150,9 @@ SQL 错误码以标准的 SQL State,Vendor Code 和详细错误信息提供,
 | 20007       | 42S01     | Index '%s' already exists.                         
                                                                                
 |
 | 20008       | 42S02     | Index '%s' does not exist.                         
                                                                                
 |
 | 20009       | 42S01     | View name has to bind to %s tables.                
                                                                                
 |
-| 20010       | 42S02     | %s configuration does not exist in database '%s'.  
                                                                                
 |
-| 20011       | 44000     | Invalid binding table configuration.               
                                                                                
 |
-| 20012       | 44000     | Only allowed 0 or 1 sharding strategy 
configuration.                                                                  
              |
-| 20013       | 42S01     | Same actual data node cannot be configured in 
multiple logic tables in same database, logical table '%s', actual data node 
'%s.%s'. |
+| 20010       | 44000     | Invalid binding table configuration.               
                                                                                
 |
+| 20011       | 44000     | Only allowed 0 or 1 sharding strategy 
configuration.                                                                  
              |
+| 20012       | 42S01     | Same actual data node cannot be configured in 
multiple logic tables in same database, logical table '%s', actual data node 
'%s.%s'. |
 | 20020       | 44000     | Sharding value can not be null in SQL statement.   
                                                                                
 |
 | 20021       | HY004     | Found different types for sharding value '%s'.     
                                                                                
 |
 | 20022       | HY004     | Invalid %s, datetime pattern should be '%s', value 
is '%s'.                                                                        
 |
diff --git a/docs/document/content/user-manual/error-code/sql-error-code.en.md 
b/docs/document/content/user-manual/error-code/sql-error-code.en.md
index ed6bb64eb86..b0db32715f8 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
@@ -18,6 +18,7 @@ SQL error codes provide by standard `SQL State`, `Vendor 
Code` and `Reason`, whi
 | 10001       | 42S02     | Schema '%s' does not exist.                        
                                 |
 | 10002       | 42S02     | Table or view '%s' does not exist.                 
                                 |
 | 10003       | 42S02     | Unknown column '%s' in '%s'.                       
                                 |
+| 10010       | HY000     | Rule and storage meta data mismatched, reason is: 
%s.                               |
 | 10100       | HY000     | Can not %s storage units '%s'.                     
                                 |
 | 10101       | 42S02     | There is no storage unit in database '%s'.         
                                 |
 | 10102       | 44000     | Storage units '%s' do not exist in database '%s'.  
                                 |
@@ -140,7 +141,7 @@ SQL error codes provide by standard `SQL State`, `Vendor 
Code` and `Reason`, whi
 
 | Vendor Code | SQL State | Reason                                             
                                                                                
 |
 
|-------------|-----------|-------------------------------------------------------------------------------------------------------------------------------------|
-| 20000       | 44000     | Can not get uniformed table structure for logic 
table '%s', it has different meta data of actual tables are as follows: %s      
    |
+| 20000       | 42S02     | %s configuration does not exist in database '%s'.  
                                                                                
 |
 | 20001       | 42S02     | Can not find table rule with logic tables '%s'.    
                                                                                
 |
 | 20002       | 42S02     | Can not find data source in sharding rule, invalid 
actual data node '%s'.                                                          
 |
 | 20003       | 42S02     | Data nodes is required for sharding table '%s'.    
                                                                                
 |
@@ -150,10 +151,9 @@ SQL error codes provide by standard `SQL State`, `Vendor 
Code` and `Reason`, whi
 | 20007       | 42S01     | Index '%s' already exists.                         
                                                                                
 |
 | 20008       | 42S02     | Index '%s' does not exist.                         
                                                                                
 |
 | 20009       | 42S01     | View name has to bind to %s tables.                
                                                                                
 |
-| 20010       | 42S02     | %s configuration does not exist in database '%s'.  
                                                                                
 |
-| 20011       | 44000     | Invalid binding table configuration.               
                                                                                
 |
-| 20012       | 44000     | Only allowed 0 or 1 sharding strategy 
configuration.                                                                  
              |
-| 20013       | 42S01     | Same actual data node cannot be configured in 
multiple logic tables in same database, logical table '%s', actual data node 
'%s.%s'. |
+| 20010       | 44000     | Invalid binding table configuration.               
                                                                                
 |
+| 20011       | 44000     | Only allowed 0 or 1 sharding strategy 
configuration.                                                                  
              |
+| 20012       | 42S01     | Same actual data node cannot be configured in 
multiple logic tables in same database, logical table '%s', actual data node 
'%s.%s'. |
 | 20020       | 44000     | Sharding value can not be null in SQL statement.   
                                                                                
 |
 | 20021       | HY004     | Found different types for sharding value '%s'.     
                                                                                
 |
 | 20022       | HY004     | Invalid %s, datetime pattern should be '%s', value 
is '%s'.                                                                        
 |
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/metadata/DuplicateSharingActualDataNodeException.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/metadata/DuplicateSharingActualDataNodeException.java
index b5946a68c0e..9ae794b0c17 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/metadata/DuplicateSharingActualDataNodeException.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/metadata/DuplicateSharingActualDataNodeException.java
@@ -28,7 +28,7 @@ public final class DuplicateSharingActualDataNodeException 
extends ShardingSQLEx
     private static final long serialVersionUID = 3503761639898230998L;
     
     public DuplicateSharingActualDataNodeException(final String 
logicalTableName, final String dataSourceName, final String tableName) {
-        super(XOpenSQLState.DUPLICATE, 13,
+        super(XOpenSQLState.DUPLICATE, 12,
                 "Same actual data node cannot be configured in multiple logic 
tables in same database, logical table '%s', actual data node '%s.%s'.", 
logicalTableName, dataSourceName, tableName);
     }
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/metadata/InconsistentShardingTableMetaDataException.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/metadata/InconsistentShardingTableMetaDataException.java
deleted file mode 100644
index 97266cff683..00000000000
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/metadata/InconsistentShardingTableMetaDataException.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * 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.sharding.exception.metadata;
-
-import 
org.apache.shardingsphere.infra.exception.core.external.sql.sqlstate.XOpenSQLState;
-import org.apache.shardingsphere.sharding.exception.ShardingSQLException;
-import org.apache.shardingsphere.sharding.metadata.TableMetaDataViolation;
-
-import java.util.Collection;
-
-/**
- * Inconsistent sharding table meta data exception.
- */
-public final class InconsistentShardingTableMetaDataException extends 
ShardingSQLException {
-    
-    private static final long serialVersionUID = -5450346946223396192L;
-    
-    public InconsistentShardingTableMetaDataException(final String 
logicTableName, final Collection<TableMetaDataViolation> violations) {
-        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 0, 
createReason(violations), logicTableName);
-    }
-    
-    private static String createReason(final 
Collection<TableMetaDataViolation> violations) {
-        StringBuilder result = new StringBuilder(
-                "Can not get uniformed table structure for logic table '%s', 
it has different meta data of actual tables are as follows: 
").append(System.lineSeparator());
-        for (TableMetaDataViolation each : violations) {
-            result.append("actual table: 
").append(each.getActualTableName()).append(", meta data: 
").append(each.getTableMetaData()).append(System.lineSeparator());
-        }
-        return result.toString();
-    }
-}
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/metadata/InvalidBindingTablesException.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/metadata/InvalidBindingTablesException.java
index 9f374309d3c..6cdb348ca72 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/metadata/InvalidBindingTablesException.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/metadata/InvalidBindingTablesException.java
@@ -28,6 +28,6 @@ public final class InvalidBindingTablesException extends 
ShardingSQLException {
     private static final long serialVersionUID = 6913516240331555395L;
     
     public InvalidBindingTablesException() {
-        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 11, "Invalid binding table 
configuration.");
+        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 10, "Invalid binding table 
configuration.");
     }
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/metadata/InvalidShardingStrategyConfigCountException.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/metadata/InvalidShardingStrategyConfigCountException.java
index 65d8b33a26b..dcfb5960c5d 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/metadata/InvalidShardingStrategyConfigCountException.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/metadata/InvalidShardingStrategyConfigCountException.java
@@ -28,6 +28,6 @@ public final class 
InvalidShardingStrategyConfigCountException extends ShardingS
     private static final long serialVersionUID = 9006408233608414517L;
     
     public InvalidShardingStrategyConfigCountException() {
-        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 12, "Only allowed 0 or 1 
sharding strategy configuration.");
+        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 11, "Only allowed 0 or 1 
sharding strategy configuration.");
     }
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/metadata/MissingRequiredShardingConfigurationException.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/metadata/MissingRequiredShardingConfigurationException.java
index 79175a27613..8c9111f698f 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/metadata/MissingRequiredShardingConfigurationException.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/metadata/MissingRequiredShardingConfigurationException.java
@@ -28,10 +28,10 @@ public final class 
MissingRequiredShardingConfigurationException extends Shardin
     private static final long serialVersionUID = -7307832800220432407L;
     
     public MissingRequiredShardingConfigurationException(final String 
configKey) {
-        super(XOpenSQLState.NOT_FOUND, 10, "%s configuration does not exist.", 
configKey);
+        super(XOpenSQLState.NOT_FOUND, 0, "%s configuration does not exist.", 
configKey);
     }
     
     public MissingRequiredShardingConfigurationException(final String 
configKey, final String databaseName) {
-        super(XOpenSQLState.NOT_FOUND, 10, "%s configuration does not exist in 
database '%s'.", configKey, databaseName);
+        super(XOpenSQLState.NOT_FOUND, 0, "%s configuration does not exist in 
database '%s'.", configKey, databaseName);
     }
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/schema/ShardingSchemaTableAggregationReviser.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/schema/ShardingSchemaTableAggregationReviser.java
index 97874f8bbce..6013e825c3f 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/schema/ShardingSchemaTableAggregationReviser.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/schema/ShardingSchemaTableAggregationReviser.java
@@ -18,10 +18,10 @@
 package org.apache.shardingsphere.sharding.metadata.reviser.schema;
 
 import lombok.RequiredArgsConstructor;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.reviser.schema.SchemaTableAggregationReviser;
 import 
org.apache.shardingsphere.infra.database.core.metadata.data.model.TableMetaData;
 import 
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
-import 
org.apache.shardingsphere.sharding.exception.metadata.InconsistentShardingTableMetaDataException;
+import 
org.apache.shardingsphere.infra.exception.kernel.metadata.RuleAndStorageMetaDataMismatchedException;
+import 
org.apache.shardingsphere.infra.metadata.database.schema.reviser.schema.SchemaTableAggregationReviser;
 import org.apache.shardingsphere.sharding.metadata.TableMetaDataViolation;
 import org.apache.shardingsphere.sharding.rule.ShardingRule;
 
@@ -63,6 +63,15 @@ public final class ShardingSchemaTableAggregationReviser 
implements SchemaTableA
         TableMetaData sample = tableMetaDataList.iterator().next();
         Collection<TableMetaDataViolation> violations = 
tableMetaDataList.stream()
                 .filter(each -> !sample.equals(each)).map(each -> new 
TableMetaDataViolation(each.getName(), each)).collect(Collectors.toList());
-        ShardingSpherePreconditions.checkState(violations.isEmpty(), () -> new 
InconsistentShardingTableMetaDataException(logicTableName, violations));
+        ShardingSpherePreconditions.checkState(violations.isEmpty(), () -> new 
RuleAndStorageMetaDataMismatchedException(createErrorReason(logicTableName, 
violations)));
+    }
+    
+    private String createErrorReason(final String logicTableName, final 
Collection<TableMetaDataViolation> violations) {
+        StringBuilder result = new StringBuilder(
+                "Can not get uniformed table structure for logic table '%s', 
it has different meta data of actual tables are as follows: 
").append(System.lineSeparator());
+        for (TableMetaDataViolation each : violations) {
+            result.append("actual table: 
").append(each.getActualTableName()).append(", meta data: 
").append(each.getTableMetaData()).append(System.lineSeparator());
+        }
+        return String.format(result.toString(), logicTableName);
     }
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/metadata/InvalidBindingTablesException.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/kernel/metadata/RuleAndStorageMetaDataMismatchedException.java
similarity index 61%
copy from 
features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/metadata/InvalidBindingTablesException.java
copy to 
infra/common/src/main/java/org/apache/shardingsphere/infra/exception/kernel/metadata/RuleAndStorageMetaDataMismatchedException.java
index 9f374309d3c..5b56e1f9d3e 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/metadata/InvalidBindingTablesException.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/kernel/metadata/RuleAndStorageMetaDataMismatchedException.java
@@ -15,19 +15,19 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sharding.exception.metadata;
+package org.apache.shardingsphere.infra.exception.kernel.metadata;
 
 import 
org.apache.shardingsphere.infra.exception.core.external.sql.sqlstate.XOpenSQLState;
-import org.apache.shardingsphere.sharding.exception.ShardingSQLException;
+import 
org.apache.shardingsphere.infra.exception.core.external.sql.type.kernel.category.MetaDataSQLException;
 
 /**
- * Invalid binding tables exception.
+ * Rule and storage metadata mismatched exception.
  */
-public final class InvalidBindingTablesException extends ShardingSQLException {
+public final class RuleAndStorageMetaDataMismatchedException extends 
MetaDataSQLException {
     
-    private static final long serialVersionUID = 6913516240331555395L;
+    private static final long serialVersionUID = -1931359961875820757L;
     
-    public InvalidBindingTablesException() {
-        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 11, "Invalid binding table 
configuration.");
+    public RuleAndStorageMetaDataMismatchedException(final String reason) {
+        super(XOpenSQLState.GENERAL_ERROR, 10, "Rule and storage meta data 
mismatched, reason is: %s.", reason);
     }
 }

Reply via email to