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 <[email protected]>
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);
}
}