[minor](Nereids): unify name about Transpose. (#19662)

This commit is contained in:
jakevin
2023-05-17 11:33:02 +08:00
committed by GitHub
parent 1462e44162
commit 4607a3408e
16 changed files with 58 additions and 58 deletions

View File

@ -67,13 +67,13 @@ import org.apache.doris.nereids.rules.rewrite.logical.PushFilterInsideJoin;
import org.apache.doris.nereids.rules.rewrite.logical.PushdownFilterThroughProject;
import org.apache.doris.nereids.rules.rewrite.logical.PushdownLimit;
import org.apache.doris.nereids.rules.rewrite.logical.ReorderJoin;
import org.apache.doris.nereids.rules.rewrite.logical.SemiJoinAggTranspose;
import org.apache.doris.nereids.rules.rewrite.logical.SemiJoinAggTransposeProject;
import org.apache.doris.nereids.rules.rewrite.logical.SemiJoinCommute;
import org.apache.doris.nereids.rules.rewrite.logical.SemiJoinLogicalJoinTranspose;
import org.apache.doris.nereids.rules.rewrite.logical.SemiJoinLogicalJoinTransposeProject;
import org.apache.doris.nereids.rules.rewrite.logical.SimplifyAggGroupBy;
import org.apache.doris.nereids.rules.rewrite.logical.SplitLimit;
import org.apache.doris.nereids.rules.rewrite.logical.TransposeSemiJoinAgg;
import org.apache.doris.nereids.rules.rewrite.logical.TransposeSemiJoinAggProject;
import org.apache.doris.nereids.rules.rewrite.logical.TransposeSemiJoinLogicalJoin;
import org.apache.doris.nereids.rules.rewrite.logical.TransposeSemiJoinLogicalJoinProject;
import com.google.common.collect.ImmutableList;
@ -183,10 +183,10 @@ public class NereidsRewriter extends BatchRewriteJob {
// pushdown SEMI Join
bottomUp(
new SemiJoinCommute(),
new SemiJoinLogicalJoinTranspose(),
new SemiJoinLogicalJoinTransposeProject(),
new SemiJoinAggTranspose(),
new SemiJoinAggTransposeProject()
new TransposeSemiJoinLogicalJoin(),
new TransposeSemiJoinLogicalJoinProject(),
new TransposeSemiJoinAgg(),
new TransposeSemiJoinAggProject()
),
topDown(

View File

@ -17,10 +17,10 @@
package org.apache.doris.nereids.rules;
import org.apache.doris.nereids.rules.exploration.AggSemiJoinTranspose;
import org.apache.doris.nereids.rules.exploration.AggSemiJoinTransposeProject;
import org.apache.doris.nereids.rules.exploration.MergeProjectsCBO;
import org.apache.doris.nereids.rules.exploration.PushdownFilterThroughProjectCBO;
import org.apache.doris.nereids.rules.exploration.TransposeAggSemiJoin;
import org.apache.doris.nereids.rules.exploration.TransposeAggSemiJoinProject;
import org.apache.doris.nereids.rules.exploration.join.InnerJoinLAsscom;
import org.apache.doris.nereids.rules.exploration.join.InnerJoinLAsscomProject;
import org.apache.doris.nereids.rules.exploration.join.InnerJoinLeftAssociate;
@ -101,8 +101,8 @@ public class RuleSet {
.add(LogicalJoinSemiJoinTransposeProject.INSTANCE)
.add(PushdownProjectThroughInnerJoin.INSTANCE)
.add(PushdownProjectThroughSemiJoin.INSTANCE)
.add(AggSemiJoinTranspose.INSTANCE)
.add(AggSemiJoinTransposeProject.INSTANCE)
.add(TransposeAggSemiJoin.INSTANCE)
.add(TransposeAggSemiJoinProject.INSTANCE)
.build();
public static final List<RuleFactory> PUSH_DOWN_FILTERS = ImmutableList.of(

View File

@ -137,11 +137,11 @@ public enum RuleType {
PUSHDOWN_FILTER_THROUGH_SET_OPERATION(RuleTypeClass.REWRITE),
COLUMN_PRUNING(RuleTypeClass.REWRITE),
LOGICAL_SEMI_JOIN_LOGICAL_JOIN_TRANSPOSE(RuleTypeClass.REWRITE),
LOGICAL_SEMI_JOIN_LOGICAL_JOIN_TRANSPOSE_PROJECT(RuleTypeClass.REWRITE),
TRANSPOSE_LOGICAL_SEMI_JOIN_LOGICAL_JOIN(RuleTypeClass.REWRITE),
TRANSPOSE_LOGICAL_SEMI_JOIN_LOGICAL_JOIN_PROJECT(RuleTypeClass.REWRITE),
LOGICAL_SEMI_JOIN_COMMUTE(RuleTypeClass.REWRITE),
LOGICAL_SEMI_JOIN_AGG_TRANSPOSE(RuleTypeClass.REWRITE),
LOGICAL_SEMI_JOIN_AGG_TRANSPOSE_PROJECT(RuleTypeClass.REWRITE),
TRANSPOSE_LOGICAL_SEMI_JOIN_AGG(RuleTypeClass.REWRITE),
TRANSPOSE_LOGICAL_SEMI_JOIN_AGG_PROJECT(RuleTypeClass.REWRITE),
// expression of plan rewrite
REWRITE_ONE_ROW_RELATION_EXPRESSION(RuleTypeClass.REWRITE),
@ -241,8 +241,9 @@ public enum RuleType {
LOGICAL_INNER_JOIN_LEFT_ASSOCIATIVE_PROJECT(RuleTypeClass.EXPLORATION),
LOGICAL_INNER_JOIN_RIGHT_ASSOCIATIVE(RuleTypeClass.EXPLORATION),
LOGICAL_INNER_JOIN_RIGHT_ASSOCIATIVE_PROJECT(RuleTypeClass.EXPLORATION),
LOGICAL_AGG_SEMI_JOIN_TRANSPOSE(RuleTypeClass.EXPLORATION),
LOGICAL_AGG_SEMI_JOIN_TRANSPOSE_PROJECT(RuleTypeClass.EXPLORATION),
TRANSPOSE_LOGICAL_AGG_SEMI_JOIN(RuleTypeClass.EXPLORATION),
TRANSPOSE_LOGICAL_AGG_SEMI_JOIN_PROJECT(RuleTypeClass.EXPLORATION),
TRANSPOSE_LOGICAL_JOIN_UNION(RuleTypeClass.EXPLORATION),
PUSH_DOWN_PROJECT_THROUGH_SEMI_JOIN(RuleTypeClass.EXPLORATION),
PUSH_DOWN_PROJECT_THROUGH_INNER_JOIN(RuleTypeClass.EXPLORATION),
EAGER_COUNT(RuleTypeClass.EXPLORATION),

View File

@ -19,10 +19,9 @@ package org.apache.doris.nereids.rules.analysis;
import org.apache.doris.nereids.rules.Rule;
import org.apache.doris.nereids.rules.RuleType;
import org.apache.doris.nereids.trees.expressions.Slot;
import org.apache.doris.nereids.trees.plans.logical.LogicalProject;
import java.util.List;
import com.google.common.collect.ImmutableList;
/**
* Eliminate the logical sub query and alias node after analyze and before rewrite
@ -34,10 +33,8 @@ public class LogicalSubQueryAliasToLogicalProject extends OneAnalysisRuleFactory
@Override
public Rule build() {
return RuleType.LOGICAL_SUB_QUERY_ALIAS_TO_LOGICAL_PROJECT.build(
logicalSubQueryAlias().then(alias -> {
List<Slot> output = alias.getOutput();
return new LogicalProject<>((List) output, alias.child());
})
logicalSubQueryAlias().then(
alias -> new LogicalProject<>(ImmutableList.copyOf(alias.getOutput()), alias.child()))
);
}
}

View File

@ -19,15 +19,15 @@ package org.apache.doris.nereids.rules.exploration;
import org.apache.doris.nereids.rules.Rule;
import org.apache.doris.nereids.rules.RuleType;
import org.apache.doris.nereids.rules.rewrite.logical.SemiJoinAggTranspose;
import org.apache.doris.nereids.rules.rewrite.logical.TransposeSemiJoinAgg;
import org.apache.doris.nereids.trees.plans.GroupPlan;
import org.apache.doris.nereids.trees.plans.logical.LogicalJoin;
/**
* Pull up SemiJoin through Agg.
*/
public class AggSemiJoinTranspose extends OneExplorationRuleFactory {
public static final AggSemiJoinTranspose INSTANCE = new AggSemiJoinTranspose();
public class TransposeAggSemiJoin extends OneExplorationRuleFactory {
public static final TransposeAggSemiJoin INSTANCE = new TransposeAggSemiJoin();
@Override
public Rule build() {
@ -35,11 +35,11 @@ public class AggSemiJoinTranspose extends OneExplorationRuleFactory {
.when(agg -> agg.child().getJoinType().isLeftSemiOrAntiJoin())
.then(agg -> {
LogicalJoin<GroupPlan, GroupPlan> join = agg.child();
if (!SemiJoinAggTranspose.canTranspose(agg, join)) {
if (!TransposeSemiJoinAgg.canTranspose(agg, join)) {
return null;
}
return join.withChildren(agg.withChildren(join.left()), join.right());
})
.toRule(RuleType.LOGICAL_AGG_SEMI_JOIN_TRANSPOSE);
.toRule(RuleType.TRANSPOSE_LOGICAL_AGG_SEMI_JOIN);
}
}

View File

@ -19,7 +19,7 @@ package org.apache.doris.nereids.rules.exploration;
import org.apache.doris.nereids.rules.Rule;
import org.apache.doris.nereids.rules.RuleType;
import org.apache.doris.nereids.rules.rewrite.logical.SemiJoinAggTranspose;
import org.apache.doris.nereids.rules.rewrite.logical.TransposeSemiJoinAgg;
import org.apache.doris.nereids.trees.plans.GroupPlan;
import org.apache.doris.nereids.trees.plans.logical.LogicalJoin;
import org.apache.doris.nereids.trees.plans.logical.LogicalProject;
@ -27,8 +27,8 @@ import org.apache.doris.nereids.trees.plans.logical.LogicalProject;
/**
* Pull up SemiJoin through Agg.
*/
public class AggSemiJoinTransposeProject extends OneExplorationRuleFactory {
public static final AggSemiJoinTransposeProject INSTANCE = new AggSemiJoinTransposeProject();
public class TransposeAggSemiJoinProject extends OneExplorationRuleFactory {
public static final TransposeAggSemiJoinProject INSTANCE = new TransposeAggSemiJoinProject();
@Override
public Rule build() {
@ -37,11 +37,11 @@ public class AggSemiJoinTransposeProject extends OneExplorationRuleFactory {
.then(agg -> {
LogicalProject<LogicalJoin<GroupPlan, GroupPlan>> project = agg.child();
LogicalJoin<GroupPlan, GroupPlan> join = project.child();
if (!SemiJoinAggTranspose.canTranspose(agg, join)) {
if (!TransposeSemiJoinAgg.canTranspose(agg, join)) {
return null;
}
return join.withChildren(agg.withChildren(project.withChildren(join.left())), join.right());
})
.toRule(RuleType.LOGICAL_AGG_SEMI_JOIN_TRANSPOSE_PROJECT);
.toRule(RuleType.TRANSPOSE_LOGICAL_AGG_SEMI_JOIN_PROJECT);
}
}

View File

@ -24,6 +24,8 @@ import org.apache.doris.nereids.trees.plans.algebra.SetOperation.Qualifier;
import org.apache.doris.nereids.trees.plans.logical.LogicalAggregate;
import org.apache.doris.nereids.trees.plans.logical.LogicalUnion;
import com.google.common.collect.ImmutableList;
import java.util.Optional;
/**
@ -34,7 +36,7 @@ public class BuildAggForUnion extends OneRewriteRuleFactory {
public Rule build() {
return logicalUnion().whenNot(LogicalUnion::hasBuildAgg).then(union -> {
if (union.getQualifier() == Qualifier.DISTINCT) {
return new LogicalAggregate(union.getOutputs(), union.getOutputs(),
return new LogicalAggregate<>(ImmutableList.copyOf(union.getOutputs()), union.getOutputs(),
true, Optional.empty(), union.withHasBuildAgg());
}
return union;

View File

@ -31,7 +31,7 @@ import java.util.Set;
/**
* Pushdown semi-join through agg
*/
public class SemiJoinAggTranspose extends OneRewriteRuleFactory {
public class TransposeSemiJoinAgg extends OneRewriteRuleFactory {
@Override
public Rule build() {
return logicalJoin(logicalAggregate(), any())
@ -43,7 +43,7 @@ public class SemiJoinAggTranspose extends OneRewriteRuleFactory {
return null;
}
return aggregate.withChildren(join.withChildren(aggregate.child(), join.right()));
}).toRule(RuleType.LOGICAL_SEMI_JOIN_AGG_TRANSPOSE);
}).toRule(RuleType.TRANSPOSE_LOGICAL_SEMI_JOIN_AGG);
}
/**

View File

@ -29,7 +29,7 @@ import org.apache.doris.qe.ConnectContext;
/**
* Pushdown semi-join through agg
*/
public class SemiJoinAggTransposeProject extends OneRewriteRuleFactory {
public class TransposeSemiJoinAggProject extends OneRewriteRuleFactory {
@Override
public Rule build() {
return logicalJoin(logicalProject(logicalAggregate()), any())
@ -40,11 +40,11 @@ public class SemiJoinAggTransposeProject extends OneRewriteRuleFactory {
.then(join -> {
LogicalProject<LogicalAggregate<Plan>> project = join.left();
LogicalAggregate<Plan> aggregate = project.child();
if (!SemiJoinAggTranspose.canTranspose(aggregate, join)) {
if (!TransposeSemiJoinAgg.canTranspose(aggregate, join)) {
return null;
}
Plan newPlan = aggregate.withChildren(join.withChildren(aggregate.child(), join.right()));
return project.withChildren(newPlan);
}).toRule(RuleType.LOGICAL_SEMI_JOIN_AGG_TRANSPOSE_PROJECT);
}).toRule(RuleType.TRANSPOSE_LOGICAL_SEMI_JOIN_AGG_PROJECT);
}
}

View File

@ -20,7 +20,7 @@ package org.apache.doris.nereids.rules.rewrite.logical;
import org.apache.doris.nereids.rules.Rule;
import org.apache.doris.nereids.rules.RuleType;
import org.apache.doris.nereids.rules.rewrite.OneRewriteRuleFactory;
import org.apache.doris.nereids.rules.rewrite.logical.SemiJoinLogicalJoinTransposeProject.ContainsType;
import org.apache.doris.nereids.rules.rewrite.logical.TransposeSemiJoinLogicalJoinProject.ContainsType;
import org.apache.doris.nereids.trees.expressions.ExprId;
import org.apache.doris.nereids.trees.plans.JoinType;
import org.apache.doris.nereids.trees.plans.Plan;
@ -35,7 +35,7 @@ import java.util.Set;
* <li>SemiJoin(LogicalJoin(X, Y), Z) -> LogicalJoin(X, SemiJoin(Y, Z))
* </ul>
*/
public class SemiJoinLogicalJoinTranspose extends OneRewriteRuleFactory {
public class TransposeSemiJoinLogicalJoin extends OneRewriteRuleFactory {
@Override
public Rule build() {
return logicalJoin(logicalJoin(), any())
@ -53,7 +53,7 @@ public class SemiJoinLogicalJoinTranspose extends OneRewriteRuleFactory {
Plan c = topSemiJoin.right();
Set<ExprId> conjunctsIds = topSemiJoin.getConditionExprId();
ContainsType containsType = SemiJoinLogicalJoinTransposeProject.containsChildren(conjunctsIds,
ContainsType containsType = TransposeSemiJoinLogicalJoinProject.containsChildren(conjunctsIds,
a.getOutputExprIdSet(), b.getOutputExprIdSet());
if (containsType == ContainsType.ALL) {
return null;
@ -87,6 +87,6 @@ public class SemiJoinLogicalJoinTranspose extends OneRewriteRuleFactory {
Plan newBottomSemiJoin = topSemiJoin.withChildren(b, c);
return bottomJoin.withChildren(a, newBottomSemiJoin);
}
}).toRule(RuleType.LOGICAL_SEMI_JOIN_LOGICAL_JOIN_TRANSPOSE);
}).toRule(RuleType.TRANSPOSE_LOGICAL_SEMI_JOIN_LOGICAL_JOIN);
}
}

View File

@ -39,7 +39,7 @@ import java.util.Set;
* <li>SemiJoin(LogicalJoin(X, Y), Z) -> LogicalJoin(X, SemiJoin(Y, Z))
* </ul>
*/
public class SemiJoinLogicalJoinTransposeProject extends OneRewriteRuleFactory {
public class TransposeSemiJoinLogicalJoinProject extends OneRewriteRuleFactory {
@Override
public Rule build() {
return logicalJoin(logicalProject(logicalJoin()), any())
@ -99,7 +99,7 @@ public class SemiJoinLogicalJoinTransposeProject extends OneRewriteRuleFactory {
Plan newTopJoin = bottomJoin.withChildren(a, newBottomSemiJoin);
return project.withChildren(newTopJoin);
}
}).toRule(RuleType.LOGICAL_SEMI_JOIN_LOGICAL_JOIN_TRANSPOSE_PROJECT);
}).toRule(RuleType.TRANSPOSE_LOGICAL_SEMI_JOIN_LOGICAL_JOIN_PROJECT);
}
enum ContainsType {

View File

@ -32,7 +32,7 @@ import org.apache.doris.nereids.util.PlanConstructor;
import com.google.common.collect.ImmutableList;
import org.junit.jupiter.api.Test;
class AggSemiJoinTransposeTest implements MemoPatternMatchSupported {
class TransposeAggSemiJoinTest implements MemoPatternMatchSupported {
private final LogicalOlapScan scan1 = PlanConstructor.newLogicalOlapScan(0, "t1", 0);
private final LogicalOlapScan scan2 = PlanConstructor.newLogicalOlapScan(1, "t2", 0);
@ -48,7 +48,7 @@ class AggSemiJoinTransposeTest implements MemoPatternMatchSupported {
)
.build();
PlanChecker.from(MemoTestUtils.createConnectContext(), plan)
.applyExploration(AggSemiJoinTranspose.INSTANCE.build())
.applyExploration(TransposeAggSemiJoin.INSTANCE.build())
.printlnExploration()
.matchesExploration(
leftSemiLogicalJoin(

View File

@ -30,7 +30,7 @@ import org.apache.doris.nereids.util.PlanConstructor;
import com.google.common.collect.ImmutableList;
import org.junit.jupiter.api.Test;
class SemiJoinAggTransposeProjectTest implements MemoPatternMatchSupported {
class TransposeSemiJoinAggProjectTest implements MemoPatternMatchSupported {
private final LogicalOlapScan scan1 = PlanConstructor.newLogicalOlapScan(0, "t1", 0);
private final LogicalOlapScan scan2 = PlanConstructor.newLogicalOlapScan(1, "t2", 0);
@ -42,7 +42,7 @@ class SemiJoinAggTransposeProjectTest implements MemoPatternMatchSupported {
.join(scan2, JoinType.LEFT_SEMI_JOIN, Pair.of(0, 0))
.build();
PlanChecker.from(MemoTestUtils.createConnectContext(), plan)
.applyTopDown(new SemiJoinAggTransposeProject())
.applyTopDown(new TransposeSemiJoinAggProject())
.printlnTree()
.matchesFromRoot(
logicalProject(

View File

@ -30,7 +30,7 @@ import org.apache.doris.nereids.util.PlanConstructor;
import com.google.common.collect.ImmutableList;
import org.junit.jupiter.api.Test;
class SemiJoinAggTransposeTest implements MemoPatternMatchSupported {
class TransposeSemiJoinAggTest implements MemoPatternMatchSupported {
private final LogicalOlapScan scan1 = PlanConstructor.newLogicalOlapScan(0, "t1", 0);
private final LogicalOlapScan scan2 = PlanConstructor.newLogicalOlapScan(1, "t2", 0);
@ -41,7 +41,7 @@ class SemiJoinAggTransposeTest implements MemoPatternMatchSupported {
.join(scan2, JoinType.LEFT_SEMI_JOIN, Pair.of(0, 0))
.build();
PlanChecker.from(MemoTestUtils.createConnectContext(), plan)
.applyTopDown(new SemiJoinAggTranspose())
.applyTopDown(new TransposeSemiJoinAgg())
.matchesFromRoot(
logicalAggregate(
leftSemiLogicalJoin()

View File

@ -30,7 +30,7 @@ import org.apache.doris.nereids.util.PlanConstructor;
import com.google.common.collect.ImmutableList;
import org.junit.jupiter.api.Test;
class SemiJoinLogicalJoinTransposeProjectTest implements MemoPatternMatchSupported {
class TransposeSemiJoinLogicalJoinProjectTest implements MemoPatternMatchSupported {
private static final LogicalOlapScan scan1 = PlanConstructor.newLogicalOlapScan(0, "t1", 0);
private static final LogicalOlapScan scan2 = PlanConstructor.newLogicalOlapScan(1, "t2", 0);
private static final LogicalOlapScan scan3 = PlanConstructor.newLogicalOlapScan(2, "t3", 0);
@ -53,7 +53,7 @@ class SemiJoinLogicalJoinTransposeProjectTest implements MemoPatternMatchSupport
.build();
PlanChecker.from(MemoTestUtils.createConnectContext(), topJoin)
.applyTopDown(new SemiJoinLogicalJoinTransposeProject())
.applyTopDown(new TransposeSemiJoinLogicalJoinProject())
.matchesFromRoot(
logicalProject(
innerLogicalJoin(
@ -85,7 +85,7 @@ class SemiJoinLogicalJoinTransposeProjectTest implements MemoPatternMatchSupport
.build();
PlanChecker.from(MemoTestUtils.createConnectContext(), topJoin)
.applyTopDown(new SemiJoinLogicalJoinTransposeProject())
.applyTopDown(new TransposeSemiJoinLogicalJoinProject())
.matchesFromRoot(
logicalProject(
logicalJoin(

View File

@ -31,7 +31,7 @@ import org.apache.doris.nereids.util.PlanConstructor;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
public class SemiJoinLogicalJoinTransposeTest implements MemoPatternMatchSupported {
public class TransposeSemiJoinLogicalJoinTest implements MemoPatternMatchSupported {
private static final LogicalOlapScan scan1 = PlanConstructor.newLogicalOlapScan(0, "t1", 0);
private static final LogicalOlapScan scan2 = PlanConstructor.newLogicalOlapScan(1, "t2", 0);
private static final LogicalOlapScan scan3 = PlanConstructor.newLogicalOlapScan(2, "t3", 0);
@ -51,7 +51,7 @@ public class SemiJoinLogicalJoinTransposeTest implements MemoPatternMatchSupport
.build();
PlanChecker.from(MemoTestUtils.createConnectContext(), topJoin)
.applyTopDown(new SemiJoinLogicalJoinTranspose())
.applyTopDown(new TransposeSemiJoinLogicalJoin())
.matchesFromRoot(
innerLogicalJoin(
leftSemiLogicalJoin(
@ -78,7 +78,7 @@ public class SemiJoinLogicalJoinTransposeTest implements MemoPatternMatchSupport
.build();
PlanChecker.from(MemoTestUtils.createConnectContext(), topJoin)
.applyTopDown(new SemiJoinLogicalJoinTranspose())
.applyTopDown(new TransposeSemiJoinLogicalJoin())
.checkMemo(memo -> {
Group root = memo.getRoot();
Assertions.assertEquals(1, root.getLogicalExpressions().size());