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 <[email protected]>
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();
- }
}