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: 吴伟杰 <[email protected]>
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;