You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by me...@apache.org on 2022/06/08 12:31:50 UTC
[shardingsphere] branch master updated: Refactor ShardingSphereOptimizer (#18246)
This is an automated email from the ASF dual-hosted git repository.
menghaoran 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 8c2d591dc8d Refactor ShardingSphereOptimizer (#18246)
8c2d591dc8d is described below
commit 8c2d591dc8dc41084f8bf47bbe27405d7af1b148
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Wed Jun 8 20:31:43 2022 +0800
Refactor ShardingSphereOptimizer (#18246)
* Refactor ShardingSphereOptimizer
* Refactor ShardingSphereOptimizer
* Refactor ShardingSphereOptimizer
* Refactor ShardingSphereOptimizer
* Refactor ShardingSphereOptimizer
---
.../federation/optimizer/ShardingSphereOptimizer.java | 17 ++++++++++-------
1 file changed, 10 insertions(+), 7 deletions(-)
diff --git a/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/ShardingSphereOptimizer.java b/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/ShardingSphereOptimizer.java
index fb4af524b84..d5fef58e66e 100644
--- a/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/ShardingSphereOptimizer.java
+++ b/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/ShardingSphereOptimizer.java
@@ -20,6 +20,7 @@ package org.apache.shardingsphere.infra.federation.optimizer;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import org.apache.calcite.adapter.enumerable.EnumerableConvention;
+import org.apache.calcite.plan.Convention;
import org.apache.calcite.plan.RelOptPlanner;
import org.apache.calcite.plan.RelTraitSet;
import org.apache.calcite.rel.RelCollation;
@@ -73,18 +74,20 @@ public final class ShardingSphereOptimizer {
private RelNode optimize(final SqlToRelConverter converter, final RelRoot relRoot) {
RelOptPlanner planner = converter.getCluster().getPlanner();
- RelRoot optimizedRelRoot = createRelRoot(planner.changeTraits(relRoot.rel, converter.getCluster().traitSet().replace(EnumerableConvention.INSTANCE)), relRoot.validatedRowType);
- return Programs.standard().run(planner, optimizedRelRoot.rel, getDesireRootTraitSet(optimizedRelRoot), Collections.emptyList(), Collections.emptyList());
+ RelNode optimizedRelNode = planner.changeTraits(relRoot.rel, getDesiredTraitSet(converter.getCluster().traitSet(), EnumerableConvention.INSTANCE));
+ RelRoot optimizedRelRoot = createOptimizedRelRoot(optimizedRelNode, relRoot.validatedRowType);
+ return Programs.standard().run(planner, optimizedRelRoot.rel, optimizedRelRoot.rel.getTraitSet(), Collections.emptyList(), Collections.emptyList());
}
- private RelRoot createRelRoot(final RelNode relNode, final RelDataType resultType) {
+ // TODO replace to related convention
+ private RelTraitSet getDesiredTraitSet(final RelTraitSet relTraitSet, final Convention convention) {
+ return relTraitSet.replace(convention).simplify();
+ }
+
+ private RelRoot createOptimizedRelRoot(final RelNode relNode, final RelDataType resultType) {
RelDataType rowType = relNode.getRowType();
List<Pair<Integer, String>> fields = Pair.zip(ImmutableIntList.identity(rowType.getFieldCount()), rowType.getFieldNames());
RelCollation collation = relNode instanceof Sort ? ((Sort) relNode).collation : RelCollations.EMPTY;
return new RelRoot(relNode, resultType, SqlKind.SELECT, fields, collation, new ArrayList<>());
}
-
- private RelTraitSet getDesireRootTraitSet(final RelRoot relRoot) {
- return relRoot.rel.getTraitSet().replace(EnumerableConvention.INSTANCE).replace(relRoot.collation).simplify();
- }
}