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