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

panjuan 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 23c502ccb4b Revise PR 20841 (#20869)
23c502ccb4b is described below

commit 23c502ccb4b8b207c1fa31b1644da6d3520f2c5e
Author: Zhengqiang Duan <[email protected]>
AuthorDate: Thu Sep 8 11:53:12 2022 +0800

    Revise PR 20841 (#20869)
---
 .../optimizer/ShardingSphereOptimizer.java              |  5 ++---
 .../metadata/translatable/TranslatableProjectRule.java  | 17 ++++++++---------
 2 files changed, 10 insertions(+), 12 deletions(-)

diff --git 
a/shardingsphere-kernel/shardingsphere-sql-federation/shardingsphere-sql-federation-optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/ShardingSphereOptimizer.java
 
b/shardingsphere-kernel/shardingsphere-sql-federation/shardingsphere-sql-federation-optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/ShardingSphereOptimizer.java
index 2cf78ec2ce8..454e9b7bf60 100644
--- 
a/shardingsphere-kernel/shardingsphere-sql-federation/shardingsphere-sql-federation-optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/ShardingSphereOptimizer.java
+++ 
b/shardingsphere-kernel/shardingsphere-sql-federation/shardingsphere-sql-federation-optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/ShardingSphereOptimizer.java
@@ -23,8 +23,8 @@ import org.apache.calcite.plan.RelOptPlanner;
 import org.apache.calcite.rel.RelNode;
 import org.apache.calcite.sql.SqlNode;
 import org.apache.calcite.sql2rel.SqlToRelConverter;
-import 
org.apache.shardingsphere.sqlfederation.optimizer.converter.SQLNodeConverterEngine;
 import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
+import 
org.apache.shardingsphere.sqlfederation.optimizer.converter.SQLNodeConverterEngine;
 
 /**
  * ShardingSphere optimizer.
@@ -46,8 +46,7 @@ public final class ShardingSphereOptimizer {
         SqlNode sqlNode = SQLNodeConverterEngine.convert(sqlStatement);
         RelNode logicPlan = converter.convertQuery(sqlNode, true, true).rel;
         RelNode ruleBasedPlan = optimizeWithRBO(logicPlan, hepPlanner);
-        RelNode costBasedPlan = optimizeWithCBO(ruleBasedPlan, converter);
-        return costBasedPlan;
+        return optimizeWithCBO(ruleBasedPlan, converter);
     }
     
     private static RelNode optimizeWithRBO(final RelNode logicPlan, final 
RelOptPlanner hepPlanner) {
diff --git 
a/shardingsphere-kernel/shardingsphere-sql-federation/shardingsphere-sql-federation-optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/translatable/TranslatableProjectRule.java
 
b/shardingsphere-kernel/shardingsphere-sql-federation/shardingsphere-sql-federation-optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/translatable/TranslatableProjectRule.java
index 56739774bf5..cf83ff1dbe5 100644
--- 
a/shardingsphere-kernel/shardingsphere-sql-federation/shardingsphere-sql-federation-optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/translatable/TranslatableProjectRule.java
+++ 
b/shardingsphere-kernel/shardingsphere-sql-federation/shardingsphere-sql-federation-optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/translatable/TranslatableProjectRule.java
@@ -26,7 +26,7 @@ import org.apache.calcite.rex.RexInputRef;
 import org.apache.calcite.rex.RexNode;
 import org.apache.calcite.tools.RelBuilderFactory;
 
-import java.util.LinkedList;
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -45,23 +45,22 @@ public class TranslatableProjectRule extends RelOptRule {
         LogicalProject project = call.rel(0);
         TranslatableTableScan scan = call.rel(1);
         int[] fields = getProjectFields(project.getProjects());
-        List expressions = project.getProjects();
-        int number = project.getProjects().size();
-        if (fields.length == 0) {
+        List<RexNode> expressions = project.getProjects();
+        if (0 == fields.length) {
             return;
-        } else if (fields.length == number) {
+        }
+        if (fields.length == expressions.size()) {
             call.transformTo(new TranslatableTableScan(scan.getCluster(), 
scan.getTable(), scan.getTranslatableTable(), scan.getFilters(), fields));
         } else {
-            TranslatableTableScan tableScan = new 
TranslatableTableScan(scan.getCluster(), scan.getTable(), 
scan.getTranslatableTable(), scan.getFilters(), fields, number, expressions);
+            TranslatableTableScan tableScan = new 
TranslatableTableScan(scan.getCluster(), scan.getTable(), 
scan.getTranslatableTable(), scan.getFilters(), fields, expressions.size(), 
expressions);
             RelNode logicalProject = LogicalProject.create(tableScan, 
project.getHints(), project.getProjects(), project.getRowType());
             call.transformTo(logicalProject);
         }
     }
     
     private int[] getProjectFields(final List<RexNode> rexNodes) {
-        List<Integer> rexInputRefs = new LinkedList<>();
-        for (int index = 0; index < rexNodes.size(); index++) {
-            RexNode exp = rexNodes.get(index);
+        List<Integer> rexInputRefs = new ArrayList<>();
+        for (RexNode exp : rexNodes) {
             if (exp instanceof RexInputRef) {
                 rexInputRefs.add(((RexInputRef) exp).getIndex());
             }

Reply via email to