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); } }