You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by ch...@apache.org on 2025/07/07 11:20:03 UTC
(shardingsphere) branch master updated: Minor refactor for ShardingSQLFederationDecider (#35913)
This is an automated email from the ASF dual-hosted git repository.
chengzhang 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 6a2b2fb5d2e Minor refactor for ShardingSQLFederationDecider (#35913)
6a2b2fb5d2e is described below
commit 6a2b2fb5d2ea7c39ee2318560af3ec3ef614a548
Author: Zhengqiang Duan <du...@apache.org>
AuthorDate: Mon Jul 7 19:19:56 2025 +0800
Minor refactor for ShardingSQLFederationDecider (#35913)
---
.../sharding/decider/ShardingSQLFederationDecider.java | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/decider/ShardingSQLFederationDecider.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/decider/ShardingSQLFederationDecider.java
index bcf0e3e1366..91914d2fda5 100644
--- a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/decider/ShardingSQLFederationDecider.java
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/decider/ShardingSQLFederationDecider.java
@@ -66,7 +66,7 @@ public final class ShardingSQLFederationDecider implements SQLFederationDecider<
return false;
}
includedDataNodes.addAll(getTableDataNodes(rule, database, tableNames));
- if (isAllShardingTables(selectStatementContext, tableNames) && isAllSameShardingConditions(selectStatementContext, parameters, globalRuleMetaData, database, rule)) {
+ if (isAllShardingTables(selectStatementContext, tableNames) && isSubqueryAllSameShardingConditions(selectStatementContext, parameters, globalRuleMetaData, database, rule)) {
return false;
}
if (selectStatementContext.isContainsSubquery() || selectStatementContext.isContainsHaving()
@@ -82,8 +82,11 @@ public final class ShardingSQLFederationDecider implements SQLFederationDecider<
return tableNames.size() > 1 && !rule.isBindingTablesUseShardingColumnsJoin(selectStatementContext, tableNames);
}
- private boolean isAllSameShardingConditions(final SelectStatementContext selectStatementContext, final List<Object> parameters, final RuleMetaData globalRuleMetaData,
- final ShardingSphereDatabase database, final ShardingRule rule) {
+ private boolean isSubqueryAllSameShardingConditions(final SelectStatementContext selectStatementContext, final List<Object> parameters, final RuleMetaData globalRuleMetaData,
+ final ShardingSphereDatabase database, final ShardingRule rule) {
+ if (!selectStatementContext.isContainsSubquery()) {
+ return false;
+ }
ShardingConditions shardingConditions = createShardingConditions(selectStatementContext, parameters, globalRuleMetaData, database, rule);
return shardingConditions.isSameShardingCondition();
}