You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by su...@apache.org on 2023/05/17 08:52:33 UTC

[shardingsphere] branch master updated: Extract assignments out of expression (#25732)

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

sunnianjun 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 75ef0266528 Extract assignments out of expression (#25732)
75ef0266528 is described below

commit 75ef026652822c7813eaf18cdd14bce871517e2d
Author: 吴伟杰 <wu...@apache.org>
AuthorDate: Wed May 17 16:52:25 2023 +0800

    Extract assignments out of expression (#25732)
    
    * Extract assignment out of expr in ShardingSpherePreparedStatement
    
    * Extract assignment out of expr in PostgreSQLAggregatedCommandPacket
    
    * Extract assignment out of expr in ShardingRouteCacheableChecker
---
 .../extended/PostgreSQLAggregatedCommandPacket.java     |  3 ++-
 .../cache/checker/ShardingRouteCacheableChecker.java    | 17 ++++++++++-------
 .../core/statement/ShardingSpherePreparedStatement.java | 10 ++++++----
 3 files changed, 18 insertions(+), 12 deletions(-)

diff --git a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/PostgreSQLAggregatedCommandPacket.java b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/PostgreSQLAggregatedCommandPacket.java
index a5cbb79f226..8e9ab0de2d3 100644
--- a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/PostgreSQLAggregatedCommandPacket.java
+++ b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/PostgreSQLAggregatedCommandPacket.java
@@ -94,7 +94,8 @@ public final class PostgreSQLAggregatedCommandPacket extends PostgreSQLCommandPa
         }
         this.firstBindIndex = firstBindIndex;
         this.lastExecuteIndex = lastExecuteIndex;
-        if (this.containsBatchedStatements = firstStatementBindTimes == firstStatementExecuteTimes && firstStatementBindTimes >= 3) {
+        containsBatchedStatements = firstStatementBindTimes == firstStatementExecuteTimes && firstStatementBindTimes >= 3;
+        if (containsBatchedStatements) {
             ensureRandomAccessible(packets);
         }
     }
diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/cache/checker/ShardingRouteCacheableChecker.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/cache/checker/ShardingRouteCacheableChecker.java
index 31eb67b43be..d4b62020bfd 100644
--- a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/cache/checker/ShardingRouteCacheableChecker.java
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/cache/checker/ShardingRouteCacheableChecker.java
@@ -118,11 +118,12 @@ public final class ShardingRouteCacheableChecker {
     
     private ShardingRouteCacheableCheckResult checkInsertCacheable(final InsertStatementContext statementContext, final List<Object> params, final ShardingSphereDatabase database) {
         Collection<String> tableNames = statementContext.getTablesContext().getTableNames();
-        boolean isShardingTable;
         if (1 != tableNames.size() || null != statementContext.getInsertSelectContext() || null != statementContext.getOnDuplicateKeyUpdateValueContext()
-                || statementContext.getGeneratedKeyContext().map(GeneratedKeyContext::isGenerated).orElse(false)
-                || (isShardingTable = shardingRule.isAllShardingTables(tableNames)) && containsNonCacheableShardingAlgorithm(tableNames)
-                || !isShardingTable && !shardingRule.isAllBroadcastTables(tableNames)) {
+                || statementContext.getGeneratedKeyContext().map(GeneratedKeyContext::isGenerated).orElse(false)) {
+            return new ShardingRouteCacheableCheckResult(false, Collections.emptyList());
+        }
+        boolean isShardingTable = shardingRule.isAllShardingTables(tableNames);
+        if (isShardingTable && containsNonCacheableShardingAlgorithm(tableNames) || !isShardingTable && !shardingRule.isAllBroadcastTables(tableNames)) {
             return new ShardingRouteCacheableCheckResult(false, Collections.emptyList());
         }
         Collection<InsertValuesSegment> values = statementContext.getSqlStatement().getValues();
@@ -145,9 +146,11 @@ public final class ShardingRouteCacheableChecker {
     
     private ShardingRouteCacheableCheckResult checkUpdateOrDeleteCacheable(final SQLStatementContext statementContext, final List<Object> params, final ShardingSphereDatabase database) {
         Collection<String> tableNames = statementContext.getTablesContext().getTableNames();
-        boolean isShardingTable;
-        if (1 != tableNames.size() || (isShardingTable = shardingRule.isAllShardingTables(tableNames)) && containsNonCacheableShardingAlgorithm(tableNames)
-                || !isShardingTable && !shardingRule.isAllBroadcastTables(tableNames)) {
+        if (1 != tableNames.size()) {
+            return new ShardingRouteCacheableCheckResult(false, Collections.emptyList());
+        }
+        boolean isShardingTable = shardingRule.isAllShardingTables(tableNames);
+        if (isShardingTable && containsNonCacheableShardingAlgorithm(tableNames) || !isShardingTable && !shardingRule.isAllBroadcastTables(tableNames)) {
             return new ShardingRouteCacheableCheckResult(false, Collections.emptyList());
         }
         List<ShardingCondition> shardingConditions = new WhereClauseShardingConditionEngine(database, shardingRule, timeServiceRule).createShardingConditions(statementContext, params);
diff --git a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
index 493b34088fc..704167d98c3 100644
--- a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
+++ b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
@@ -268,8 +268,9 @@ public final class ShardingSpherePreparedStatement extends AbstractPreparedState
             List<QueryResult> queryResults = executeQuery0();
             MergedResult mergedResult = mergeQuery(queryResults);
             List<ResultSet> resultSets = getResultSets();
-            Map<String, Integer> columnLabelAndIndexMap = null != this.columnLabelAndIndexMap ? this.columnLabelAndIndexMap
-                    : (this.columnLabelAndIndexMap = ShardingSphereResultSetUtils.createColumnLabelAndIndexMap(sqlStatementContext, resultSets.get(0).getMetaData()));
+            if (null == columnLabelAndIndexMap) {
+                columnLabelAndIndexMap = ShardingSphereResultSetUtils.createColumnLabelAndIndexMap(sqlStatementContext, resultSets.get(0).getMetaData());
+            }
             result = new ShardingSphereResultSet(resultSets, mergedResult, this, transparentStatement, executionContext, columnLabelAndIndexMap);
             // CHECKSTYLE:OFF
         } catch (final Exception ex) {
@@ -547,8 +548,9 @@ public final class ShardingSpherePreparedStatement extends AbstractPreparedState
                 return currentResultSet;
             }
             MergedResult mergedResult = mergeQuery(getQueryResults(resultSets));
-            Map<String, Integer> columnLabelAndIndexMap = null != this.columnLabelAndIndexMap ? this.columnLabelAndIndexMap
-                    : (this.columnLabelAndIndexMap = ShardingSphereResultSetUtils.createColumnLabelAndIndexMap(sqlStatementContext, resultSets.get(0).getMetaData()));
+            if (null == columnLabelAndIndexMap) {
+                columnLabelAndIndexMap = ShardingSphereResultSetUtils.createColumnLabelAndIndexMap(sqlStatementContext, resultSets.get(0).getMetaData());
+            }
             currentResultSet = new ShardingSphereResultSet(resultSets, mergedResult, this, transparentStatement, executionContext, columnLabelAndIndexMap);
         }
         return currentResultSet;