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