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

zhaojinchao 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 139b58c0434 Minor refactor sql federation and DALE2EIT (#35602)
139b58c0434 is described below

commit 139b58c043488755dcce27816d6b9590e10f128c
Author: Zhengqiang Duan <[email protected]>
AuthorDate: Fri Jun 6 15:48:39 2025 +0800

    Minor refactor sql federation and DALE2EIT (#35602)
---
 .../sqlfederation/compiler/compiler/SQLStatementCompiler.java     | 2 +-
 .../compiler/planner/builder/SQLFederationPlannerBuilder.java     | 8 +++++++-
 .../sqlfederation/compiler/rel/operator/logical/LogicalScan.java  | 4 ++--
 .../src/test/resources/cases/federation-query-sql-cases.xml       | 4 ++--
 .../org/apache/shardingsphere/test/e2e/it/sql/dal/DALE2EIT.java   | 4 ++--
 5 files changed, 14 insertions(+), 8 deletions(-)

diff --git 
a/kernel/sql-federation/compiler/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/compiler/SQLStatementCompiler.java
 
b/kernel/sql-federation/compiler/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/compiler/SQLStatementCompiler.java
index c34e99c5606..1c055adfb84 100644
--- 
a/kernel/sql-federation/compiler/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/compiler/SQLStatementCompiler.java
+++ 
b/kernel/sql-federation/compiler/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/compiler/SQLStatementCompiler.java
@@ -69,7 +69,7 @@ public final class SQLStatementCompiler {
     
     private RelNode optimize(final RelNode rewritePlan, final 
SQLFederationRelConverter converter) {
         RelOptPlanner planner = converter.getCluster().getPlanner();
-        if 
(rewritePlan.getTraitSet().equals(converter.getCluster().traitSet().replace(convention)))
 {
+        if (rewritePlan.getTraitSet().contains(convention)) {
             planner.setRoot(rewritePlan);
         } else {
             planner.setRoot(planner.changeTraits(rewritePlan, 
converter.getCluster().traitSet().replace(convention)));
diff --git 
a/kernel/sql-federation/compiler/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/planner/builder/SQLFederationPlannerBuilder.java
 
b/kernel/sql-federation/compiler/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/planner/builder/SQLFederationPlannerBuilder.java
index 43e8e546dab..df511483019 100644
--- 
a/kernel/sql-federation/compiler/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/planner/builder/SQLFederationPlannerBuilder.java
+++ 
b/kernel/sql-federation/compiler/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/planner/builder/SQLFederationPlannerBuilder.java
@@ -107,6 +107,7 @@ public final class SQLFederationPlannerBuilder {
         
builder.addGroupBegin().addRuleCollection(getAggregationRules()).addGroupEnd().addMatchOrder(HepMatchOrder.BOTTOM_UP);
         
builder.addGroupBegin().addRuleCollection(getCalcRules()).addGroupEnd().addMatchOrder(HepMatchOrder.BOTTOM_UP);
         
builder.addGroupBegin().addRuleCollection(getSubQueryRules()).addGroupEnd().addMatchOrder(HepMatchOrder.BOTTOM_UP);
+        
builder.addGroupBegin().addRuleCollection(getSortRules()).addGroupEnd().addMatchOrder(HepMatchOrder.BOTTOM_UP);
         builder.addMatchLimit(DEFAULT_MATCH_LIMIT);
         return new HepPlanner(builder.build());
     }
@@ -119,6 +120,12 @@ public final class SQLFederationPlannerBuilder {
         return result;
     }
     
+    private static Collection<RelOptRule> getSortRules() {
+        Collection<RelOptRule> result = new LinkedList<>();
+        result.add(CoreRules.SORT_JOIN_TRANSPOSE);
+        return result;
+    }
+    
     private static Collection<RelOptRule> getCalcRules() {
         Collection<RelOptRule> result = new LinkedList<>();
         
result.add(AggregateExpandDistinctAggregatesRule.Config.DEFAULT.toRule());
@@ -148,7 +155,6 @@ public final class SQLFederationPlannerBuilder {
         Collection<RelOptRule> result = new LinkedList<>();
         result.add(CoreRules.FILTER_INTO_JOIN);
         result.add(CoreRules.JOIN_CONDITION_PUSH);
-        result.add(CoreRules.SORT_JOIN_TRANSPOSE);
         result.add(CoreRules.FILTER_AGGREGATE_TRANSPOSE);
         result.add(CoreRules.FILTER_PROJECT_TRANSPOSE);
         result.add(CoreRules.FILTER_SET_OP_TRANSPOSE);
diff --git 
a/kernel/sql-federation/compiler/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/rel/operator/logical/LogicalScan.java
 
b/kernel/sql-federation/compiler/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/rel/operator/logical/LogicalScan.java
index f43d85571c3..ebf47c2ba37 100644
--- 
a/kernel/sql-federation/compiler/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/rel/operator/logical/LogicalScan.java
+++ 
b/kernel/sql-federation/compiler/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/rel/operator/logical/LogicalScan.java
@@ -35,10 +35,10 @@ import java.util.Objects;
 @Getter
 public final class LogicalScan extends TableScan {
     
-    private final LogicalScanPushDownRelBuilder pushDownRelBuilder;
-    
     private final String databaseType;
     
+    private final LogicalScanPushDownRelBuilder pushDownRelBuilder;
+    
     public LogicalScan(final TableScan tableScan, final String databaseType) {
         super(tableScan.getCluster(), tableScan.getTraitSet(), 
Collections.emptyList(), tableScan.getTable());
         this.databaseType = databaseType;
diff --git 
a/kernel/sql-federation/compiler/src/test/resources/cases/federation-query-sql-cases.xml
 
b/kernel/sql-federation/compiler/src/test/resources/cases/federation-query-sql-cases.xml
index a1e9a2e7998..58542f2ca53 100644
--- 
a/kernel/sql-federation/compiler/src/test/resources/cases/federation-query-sql-cases.xml
+++ 
b/kernel/sql-federation/compiler/src/test/resources/cases/federation-query-sql-cases.xml
@@ -222,7 +222,7 @@
     </test-case>
     
     <test-case sql="SELECT * FROM t_order o RIGHT JOIN t_order_item i ON 
o.order_id = i.order_id WHERE i.user_id = 10 ORDER BY i.item_id, 7">
-        <assertion expected-result="EnumerableSort(sort0=[$6], dir0=[ASC])   
EnumerableHashJoin(condition=[=($0, $7)], joinType=[right])     
EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT * FROM 
`federate_jdbc`.`t_order`], dynamicParameters=[null])     
EnumerableScan(table=[[federate_jdbc, t_order_item]], sql=[SELECT * FROM 
`federate_jdbc`.`t_order_item` WHERE CAST(`user_id` AS SIGNED) = 10], 
dynamicParameters=[null]) " />
+        <assertion expected-result="EnumerableSort(sort0=[$6], dir0=[ASC])   
EnumerableHashJoin(condition=[=($0, $7)], joinType=[right])     
EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT * FROM 
`federate_jdbc`.`t_order`], dynamicParameters=[null])     
EnumerableSort(sort0=[$0], dir0=[ASC])       
EnumerableScan(table=[[federate_jdbc, t_order_item]], sql=[SELECT * FROM 
`federate_jdbc`.`t_order_item` WHERE CAST(`user_id` AS SIGNED) = 10], 
dynamicParameters=[null]) " />
     </test-case>
     
     <test-case sql="SELECT * FROM t_order o JOIN t_order_item i ON o.order_id 
= i.order_id WHERE o.user_id = 10 OR i.user_id = 10 ORDER BY o.order_id">
@@ -350,7 +350,7 @@
     </test-case>
     
     <test-case sql="SELECT * FROM t_product p RIGHT JOIN t_product_detail d ON 
d.product_id = p.product_id WHERE d.detail_id = 10 ORDER BY d.product_id, 7">
-        <assertion expected-result="EnumerableSort(sort0=[$7], sort1=[$6], 
dir0=[ASC], dir1=[ASC])   EnumerableHashJoin(condition=[=($0, $7)], 
joinType=[right])     EnumerableScan(table=[[federate_jdbc, t_product]], 
sql=[SELECT * FROM `federate_jdbc`.`t_product`], dynamicParameters=[null])     
EnumerableScan(table=[[federate_jdbc, t_product_detail]], sql=[SELECT * FROM 
`federate_jdbc`.`t_product_detail` WHERE CAST(`detail_id` AS SIGNED) = 10], 
dynamicParameters=[null]) " />
+        <assertion expected-result="EnumerableSort(sort0=[$7], sort1=[$6], 
dir0=[ASC], dir1=[ASC])   EnumerableHashJoin(condition=[=($0, $7)], 
joinType=[right])     EnumerableScan(table=[[federate_jdbc, t_product]], 
sql=[SELECT * FROM `federate_jdbc`.`t_product`], dynamicParameters=[null])     
EnumerableSort(sort0=[$1], sort1=[$0], dir0=[ASC], dir1=[ASC])       
EnumerableScan(table=[[federate_jdbc, t_product_detail]], sql=[SELECT * FROM 
`federate_jdbc`.`t_product_detail` WHERE CAST(`deta [...]
     </test-case>
     
     <test-case sql="SELECT * FROM t_product p JOIN t_product_detail d ON 
d.product_id = p.product_id WHERE d.detail_id = 10 OR p.category_id = 10 ORDER 
BY d.product_id, 7">
diff --git 
a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/it/sql/dal/DALE2EIT.java
 
b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/it/sql/dal/DALE2EIT.java
index 90995142303..8d44bb312d4 100644
--- 
a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/it/sql/dal/DALE2EIT.java
+++ 
b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/it/sql/dal/DALE2EIT.java
@@ -148,8 +148,8 @@ class DALE2EIT implements SQLE2EIT {
         if (SQLE2EITContext.NOT_VERIFY_FLAG.equals(expected)) {
             return;
         }
-        assertThat(String.valueOf(actual.getObject(columnIndex)), 
is(expected));
-        assertThat(String.valueOf(actual.getObject(columnLabel)), 
is(expected));
+        assertThat(String.valueOf(actual.getObject(columnIndex)).trim(), 
is(expected));
+        assertThat(String.valueOf(actual.getObject(columnLabel)).trim(), 
is(expected));
     }
     
     private static boolean isEnabled() {

Reply via email to