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

zhangliang 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 18e11f57cf7 Refactor InsertClauseShardingConditionEngine (#33964)
18e11f57cf7 is described below

commit 18e11f57cf7806666faf1d0629e12d26a85af879
Author: Liang Zhang <zhangli...@apache.org>
AuthorDate: Sun Dec 8 11:45:49 2024 +0800

    Refactor InsertClauseShardingConditionEngine (#33964)
    
    * Remove useless codes on PipelineTableMetaData
    
    * Refactor InsertClauseShardingConditionEngine
---
 .../engine/InsertClauseShardingConditionEngine.java    | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/InsertClauseShardingConditionEngine.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/InsertClauseShardingConditionEngine.java
index 71de280b563..6abf288651d 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/InsertClauseShardingConditionEngine.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/InsertClauseShardingConditionEngine.java
@@ -57,7 +57,7 @@ public final class InsertClauseShardingConditionEngine {
     
     private final ShardingSphereDatabase database;
     
-    private final ShardingRule shardingRule;
+    private final ShardingRule rule;
     
     private final TimestampServiceRule timestampServiceRule;
     
@@ -96,12 +96,12 @@ public final class InsertClauseShardingConditionEngine {
         String tableName = 
sqlStatementContext.getSqlStatement().getTable().map(optional -> 
optional.getTableName().getIdentifier().getValue())
                 .orElseGet(() -> 
sqlStatementContext.getTablesContext().getTableNames().iterator().next());
         
ShardingSpherePreconditions.checkState(schema.containsTable(tableName), () -> 
new NoSuchTableException(tableName));
-        Collection<String> allColumnNames = 
schema.getTable(tableName).getColumnNames();
+        Collection<String> allColumnNames = 
schema.getAllColumnNames(tableName);
         if (columnNames.size() == allColumnNames.size()) {
             return;
         }
         for (String each : allColumnNames) {
-            if (!columnNames.contains(each.toLowerCase()) && 
!shardingRule.isGenerateKeyColumn(each, tableName) && 
shardingRule.findShardingColumn(each, tableName).isPresent()) {
+            if (!columnNames.contains(each.toLowerCase()) && 
!rule.isGenerateKeyColumn(each, tableName) && rule.findShardingColumn(each, 
tableName).isPresent()) {
                 appendMissingShardingConditions(shardingConditions, each, 
tableName);
             }
         }
@@ -131,7 +131,7 @@ public final class InsertClauseShardingConditionEngine {
             if (!columnNames.hasNext()) {
                 throw new InsertColumnsAndValuesMismatchedException(rowNumber);
             }
-            Optional<String> shardingColumn = 
shardingRule.findShardingColumn(columnNames.next(), tableName);
+            Optional<String> shardingColumn = 
rule.findShardingColumn(columnNames.next(), tableName);
             if (!shardingColumn.isPresent()) {
                 continue;
             }
@@ -168,19 +168,19 @@ public final class InsertClauseShardingConditionEngine {
     
     private List<ShardingCondition> 
createShardingConditionsWithInsertSelect(final InsertStatementContext 
sqlStatementContext, final List<Object> params) {
         SelectStatementContext selectStatementContext = 
sqlStatementContext.getInsertSelectContext().getSelectStatementContext();
-        return new LinkedList<>(new 
WhereClauseShardingConditionEngine(database, shardingRule, 
timestampServiceRule).createShardingConditions(selectStatementContext, params));
+        return new LinkedList<>(new 
WhereClauseShardingConditionEngine(database, rule, 
timestampServiceRule).createShardingConditions(selectStatementContext, params));
     }
     
     private void appendGeneratedKeyConditions(final InsertStatementContext 
sqlStatementContext, final List<ShardingCondition> shardingConditions) {
         Optional<GeneratedKeyContext> generatedKey = 
sqlStatementContext.getGeneratedKeyContext();
         String tableName = 
sqlStatementContext.getSqlStatement().getTable().map(optional -> 
optional.getTableName().getIdentifier().getValue()).orElse("");
-        if (generatedKey.isPresent() && generatedKey.get().isGenerated() && 
shardingRule.findShardingTable(tableName).isPresent()) {
+        if (generatedKey.isPresent() && generatedKey.get().isGenerated() && 
rule.findShardingTable(tableName).isPresent()) {
             String schemaName = 
sqlStatementContext.getTablesContext().getSchemaName()
                     .orElseGet(() -> new 
DatabaseTypeRegistry(sqlStatementContext.getDatabaseType()).getDefaultSchemaName(database.getName()));
             AlgorithmSQLContext algorithmSQLContext = new 
AlgorithmSQLContext(database.getName(), schemaName, tableName, 
generatedKey.get().getColumnName());
-            
generatedKey.get().getGeneratedValues().addAll(shardingRule.generateKeys(algorithmSQLContext,
 sqlStatementContext.getValueListCount()));
-            
generatedKey.get().setSupportAutoIncrement(shardingRule.isSupportAutoIncrement(tableName));
-            if 
(shardingRule.findShardingColumn(generatedKey.get().getColumnName(), 
tableName).isPresent()) {
+            
generatedKey.get().getGeneratedValues().addAll(rule.generateKeys(algorithmSQLContext,
 sqlStatementContext.getValueListCount()));
+            
generatedKey.get().setSupportAutoIncrement(rule.isSupportAutoIncrement(tableName));
+            if (rule.findShardingColumn(generatedKey.get().getColumnName(), 
tableName).isPresent()) {
                 appendGeneratedKeyCondition(generatedKey.get(), tableName, 
shardingConditions);
             }
         }

Reply via email to