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