You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by du...@apache.org on 2023/04/26 00:15:04 UTC

[shardingsphere] branch master updated: Remove useless ColumnSegment.hashcode (#25329)

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

duanzhengqiang 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 87589539b91 Remove useless ColumnSegment.hashcode (#25329)
87589539b91 is described below

commit 87589539b91c8d0ce579c484b3f0d02615a25ff2
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Wed Apr 26 08:14:54 2023 +0800

    Remove useless ColumnSegment.hashcode (#25329)
    
    * Remove useless ColumnSegment.hashcode
    
    * Refactor OrderByItem
    
    * Refactor BatchPreparedStatementExecutor
---
 .../binder/segment/select/orderby/OrderByItem.java |  7 +++--
 .../batch/BatchPreparedStatementExecutor.java      | 30 +++++++++++++---------
 .../common/segment/dml/column/ColumnSegment.java   | 10 --------
 3 files changed, 23 insertions(+), 24 deletions(-)

diff --git a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/orderby/OrderByItem.java b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/orderby/OrderByItem.java
index 0b69284c7d3..4427825cbcb 100644
--- a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/orderby/OrderByItem.java
+++ b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/orderby/OrderByItem.java
@@ -17,7 +17,6 @@
 
 package org.apache.shardingsphere.infra.binder.segment.select.orderby;
 
-import lombok.EqualsAndHashCode;
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import lombok.Setter;
@@ -29,7 +28,6 @@ import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.order.item.Or
 @RequiredArgsConstructor
 @Getter
 @Setter
-@EqualsAndHashCode
 public final class OrderByItem {
     
     private final OrderByItemSegment segment;
@@ -44,4 +42,9 @@ public final class OrderByItem {
         OrderByItem orderByItem = (OrderByItem) obj;
         return segment.getOrderDirection() == orderByItem.segment.getOrderDirection() && index == orderByItem.index;
     }
+    
+    @Override
+    public int hashCode() {
+        return segment.getOrderDirection().hashCode() + Integer.hashCode(index);
+    }
 }
diff --git a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/executor/batch/BatchPreparedStatementExecutor.java b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/executor/batch/BatchPreparedStatementExecutor.java
index f870ed7e7f8..2ce7a8022df 100644
--- a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/executor/batch/BatchPreparedStatementExecutor.java
+++ b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/executor/batch/BatchPreparedStatementExecutor.java
@@ -165,28 +165,34 @@ public final class BatchPreparedStatementExecutor {
         return false;
     }
     
-    private int[] accumulate(final List<int[]> results) {
+    private int[] accumulate(final List<int[]> executeResults) {
         int[] result = new int[batchCount];
         int count = 0;
         for (ExecutionGroup<JDBCExecutionUnit> each : executionGroupContext.getInputGroups()) {
             for (JDBCExecutionUnit eachUnit : each.getInputs()) {
-                Map<Integer, Integer> jdbcAndActualAddBatchCallTimesMap = Collections.emptyMap();
-                for (BatchExecutionUnit eachExecutionUnit : batchExecutionUnits) {
-                    if (isSameDataSourceAndSQL(eachExecutionUnit, eachUnit)) {
-                        jdbcAndActualAddBatchCallTimesMap = eachExecutionUnit.getJdbcAndActualAddBatchCallTimesMap();
-                        break;
-                    }
-                }
-                for (Entry<Integer, Integer> entry : jdbcAndActualAddBatchCallTimesMap.entrySet()) {
-                    int value = null == results.get(count) ? 0 : results.get(count)[entry.getValue()];
-                    result[entry.getKey()] += value;
-                }
+                accumulate(executeResults.get(count), result, eachUnit);
                 count++;
             }
         }
         return result;
     }
     
+    private void accumulate(final int[] executeResult, final int[] addBatchCounts, final JDBCExecutionUnit executionUnit) {
+        for (Entry<Integer, Integer> entry : getJDBCAndActualAddBatchCallTimesMap(executionUnit).entrySet()) {
+            int value = null == executeResult ? 0 : executeResult[entry.getValue()];
+            addBatchCounts[entry.getKey()] += value;
+        }
+    }
+    
+    private Map<Integer, Integer> getJDBCAndActualAddBatchCallTimesMap(final JDBCExecutionUnit executionUnit) {
+        for (BatchExecutionUnit each : batchExecutionUnits) {
+            if (isSameDataSourceAndSQL(each, executionUnit)) {
+                return each.getJdbcAndActualAddBatchCallTimesMap();
+            }
+        }
+        return Collections.emptyMap();
+    }
+    
     private boolean isSameDataSourceAndSQL(final BatchExecutionUnit batchExecutionUnit, final JDBCExecutionUnit jdbcExecutionUnit) {
         return batchExecutionUnit.getExecutionUnit().getDataSourceName().equals(jdbcExecutionUnit.getExecutionUnit().getDataSourceName())
                 && batchExecutionUnit.getExecutionUnit().getSqlUnit().getSql().equals(jdbcExecutionUnit.getExecutionUnit().getSqlUnit().getSql());
diff --git a/sql-parser/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/dml/column/ColumnSegment.java b/sql-parser/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/dml/column/ColumnSegment.java
index fbf9aa4f982..1bcdfdd676b 100644
--- a/sql-parser/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/dml/column/ColumnSegment.java
+++ b/sql-parser/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/dml/column/ColumnSegment.java
@@ -66,14 +66,4 @@ public final class ColumnSegment implements ExpressionSegment, OwnerAvailable {
     public Optional<OwnerSegment> getOwner() {
         return Optional.ofNullable(owner);
     }
-    
-    @Override
-    public int hashCode() {
-        StringBuilder columnString = new StringBuilder();
-        if (null != owner) {
-            columnString.append(owner.getIdentifier().getValue());
-        }
-        columnString.append(identifier.getValue());
-        return columnString.toString().hashCode();
-    }
 }