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;