[fix](nereids)move SimplifyAggGroupBy rule into analyze phase (#32186)
This commit is contained in:
@ -46,6 +46,7 @@ import org.apache.doris.nereids.rules.analysis.ResolveOrdinalInOrderByAndGroupBy
|
||||
import org.apache.doris.nereids.rules.analysis.SubqueryToApply;
|
||||
import org.apache.doris.nereids.rules.rewrite.MergeProjects;
|
||||
import org.apache.doris.nereids.rules.rewrite.SemiJoinCommute;
|
||||
import org.apache.doris.nereids.rules.rewrite.SimplifyAggGroupBy;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
@ -162,6 +163,7 @@ public class Analyzer extends AbstractBatchJobExecutor {
|
||||
bottomUp(new CheckAnalysis()),
|
||||
topDown(new EliminateGroupByConstant()),
|
||||
|
||||
topDown(new SimplifyAggGroupBy()),
|
||||
topDown(new NormalizeAggregate()),
|
||||
topDown(new HavingToFilter()),
|
||||
bottomUp(new SemiJoinCommute()),
|
||||
|
||||
@ -120,7 +120,6 @@ import org.apache.doris.nereids.rules.rewrite.PushProjectIntoUnion;
|
||||
import org.apache.doris.nereids.rules.rewrite.PushProjectThroughUnion;
|
||||
import org.apache.doris.nereids.rules.rewrite.ReorderJoin;
|
||||
import org.apache.doris.nereids.rules.rewrite.RewriteCteChildren;
|
||||
import org.apache.doris.nereids.rules.rewrite.SimplifyAggGroupBy;
|
||||
import org.apache.doris.nereids.rules.rewrite.SplitLimit;
|
||||
import org.apache.doris.nereids.rules.rewrite.TransposeSemiJoinAgg;
|
||||
import org.apache.doris.nereids.rules.rewrite.TransposeSemiJoinAggProject;
|
||||
@ -217,7 +216,6 @@ public class Rewriter extends AbstractBatchJobExecutor {
|
||||
// but when normalizeAggregate/normalizeSort is performed, the members in apply cannot be obtained,
|
||||
// resulting in inconsistent output results and results in apply
|
||||
topDown(
|
||||
new SimplifyAggGroupBy(),
|
||||
new NormalizeAggregate(),
|
||||
new CountLiteralRewrite(),
|
||||
new NormalizeSort()
|
||||
|
||||
@ -381,7 +381,7 @@ public class FillUpMissingSlotsTest extends AnalyzeCheckTestBase implements Memo
|
||||
)
|
||||
))
|
||||
).when(FieldChecker.check("outputExpressions",
|
||||
Lists.newArrayList(pk, pk1, sumA1, countA1, sumA1A2, v1))))
|
||||
Lists.newArrayList(pk, sumA1, countA1, sumA1A2, v1))))
|
||||
).when(FieldChecker.check("conjuncts",
|
||||
ImmutableSet.of(
|
||||
new GreaterThan(pk.toSlot(), Literal.of((byte) 0)),
|
||||
@ -569,7 +569,7 @@ public class FillUpMissingSlotsTest extends AnalyzeCheckTestBase implements Memo
|
||||
PlanChecker.from(connectContext).analyze(sql)
|
||||
.matches(logicalProject(logicalSort(logicalProject(logicalAggregate(logicalProject(
|
||||
logicalFilter(logicalJoin(logicalOlapScan(), logicalOlapScan())))).when(
|
||||
FieldChecker.check("outputExpressions", Lists.newArrayList(pk, pk1,
|
||||
FieldChecker.check("outputExpressions", Lists.newArrayList(pk,
|
||||
sumA1, countA1, sumA1A2, v1))))).when(FieldChecker.check(
|
||||
"orderKeys",
|
||||
ImmutableList.of(new OrderKey(pk, true, true),
|
||||
|
||||
@ -65,6 +65,11 @@ class SimplifyAggGroupByTest implements MemoPatternMatchSupported {
|
||||
.matchesFromRoot(
|
||||
logicalAggregate().when(a -> a.getGroupByExpressions().size() == 1)
|
||||
);
|
||||
PlanChecker.from(MemoTestUtils.createConnectContext(), agg)
|
||||
.analyze()
|
||||
.matchesFromRoot(
|
||||
logicalProject(logicalAggregate().when(a -> a.getGroupByExpressions().size() == 1))
|
||||
);
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -87,6 +92,11 @@ class SimplifyAggGroupByTest implements MemoPatternMatchSupported {
|
||||
.matchesFromRoot(
|
||||
logicalAggregate().when(a -> a.equals(agg))
|
||||
);
|
||||
PlanChecker.from(MemoTestUtils.createConnectContext(), agg)
|
||||
.analyze()
|
||||
.matchesFromRoot(
|
||||
logicalProject(logicalAggregate().when(a -> a.getGroupByExpressions().size() == 2))
|
||||
);
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -109,5 +119,10 @@ class SimplifyAggGroupByTest implements MemoPatternMatchSupported {
|
||||
.matchesFromRoot(
|
||||
logicalAggregate().when(a -> a.equals(agg))
|
||||
);
|
||||
PlanChecker.from(MemoTestUtils.createConnectContext(), agg)
|
||||
.analyze()
|
||||
.matchesFromRoot(
|
||||
logicalProject(logicalAggregate().when(a -> a.getGroupByExpressions().size() == 2))
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user