You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2022/02/23 11:21:55 UTC
[shardingsphere] branch master updated: Avoid get unused service in InsertClauseShardingConditionEngine (#15587)
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 f85fdea Avoid get unused service in InsertClauseShardingConditionEngine (#15587)
f85fdea is described below
commit f85fdead66d35ca55440ba5b1e507c18a4ffbac5
Author: 吴伟杰 <wu...@apache.org>
AuthorDate: Wed Feb 23 19:20:56 2022 +0800
Avoid get unused service in InsertClauseShardingConditionEngine (#15587)
* Avoid get unused service in InsertClauseShardingConditionEngine
* Fix checkstyle
---
.../impl/InsertClauseShardingConditionEngine.java | 20 ++++++++++++--------
1 file changed, 12 insertions(+), 8 deletions(-)
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/impl/InsertClauseShardingConditionEngine.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/impl/InsertClauseShardingConditionEngine.java
index 619d40e..256d511 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/impl/InsertClauseShardingConditionEngine.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/impl/InsertClauseShardingConditionEngine.java
@@ -86,17 +86,21 @@ public final class InsertClauseShardingConditionEngine implements ShardingCondit
private ShardingCondition createShardingCondition(final String tableName, final Iterator<String> columnNames, final InsertValueContext insertValueContext, final List<Object> parameters) {
ShardingCondition result = new ShardingCondition();
- DatetimeService datetimeService = RequiredSPIRegistry.getRegisteredService(DatetimeService.class);
+ DatetimeService datetimeService = null;
for (ExpressionSegment each : insertValueContext.getValueExpressions()) {
Optional<String> shardingColumn = shardingRule.findShardingColumn(columnNames.next(), tableName);
- if (shardingColumn.isPresent()) {
- if (each instanceof SimpleExpressionSegment) {
- result.getValues().add(new ListShardingConditionValue<>(shardingColumn.get(), tableName, Collections.singletonList(getShardingValue((SimpleExpressionSegment) each, parameters))));
- } else if (ExpressionConditionUtils.isNowExpression(each)) {
- result.getValues().add(new ListShardingConditionValue<>(shardingColumn.get(), tableName, Collections.singletonList(datetimeService.getDatetime())));
- } else if (ExpressionConditionUtils.isNullExpression(each)) {
- throw new ShardingSphereException("Insert clause sharding column can't be null.");
+ if (!shardingColumn.isPresent()) {
+ continue;
+ }
+ if (each instanceof SimpleExpressionSegment) {
+ result.getValues().add(new ListShardingConditionValue<>(shardingColumn.get(), tableName, Collections.singletonList(getShardingValue((SimpleExpressionSegment) each, parameters))));
+ } else if (ExpressionConditionUtils.isNowExpression(each)) {
+ if (null == datetimeService) {
+ datetimeService = RequiredSPIRegistry.getRegisteredService(DatetimeService.class);
}
+ result.getValues().add(new ListShardingConditionValue<>(shardingColumn.get(), tableName, Collections.singletonList(datetimeService.getDatetime())));
+ } else if (ExpressionConditionUtils.isNullExpression(each)) {
+ throw new ShardingSphereException("Insert clause sharding column can't be null.");
}
}
return result;