From 527782f3d38817178732c6d109cafd87535381fe Mon Sep 17 00:00:00 2001 From: starocean999 <40539150+starocean999@users.noreply.github.com> Date: Wed, 2 Aug 2023 17:36:56 +0800 Subject: [PATCH] [fix](nereids)move RecomputeLogicalPropertiesProcessor rule before topn optimization (#22488) topn optimization will change MutableState. So need move RecomputeLogicalPropertiesProcessor rule before it --- .../doris/nereids/processor/post/PlanPostProcessors.java | 2 +- .../doris/nereids/postprocess/TopNRuntimeFilterTest.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/PlanPostProcessors.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/PlanPostProcessors.java index 3b47fb4b5d7cf5..40891e82a42957 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/PlanPostProcessors.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/PlanPostProcessors.java @@ -69,9 +69,9 @@ public List getProcessors() { } } builder.add(new Validator()); + builder.add(new RecomputeLogicalPropertiesProcessor()); builder.add(new TopNScanOpt()); builder.add(new TwoPhaseReadOpt()); - builder.add(new RecomputeLogicalPropertiesProcessor()); return builder.build(); } } diff --git a/fe/fe-core/src/test/java/org/apache/doris/nereids/postprocess/TopNRuntimeFilterTest.java b/fe/fe-core/src/test/java/org/apache/doris/nereids/postprocess/TopNRuntimeFilterTest.java index a3449909deb9c2..b38f4876e39cae 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/nereids/postprocess/TopNRuntimeFilterTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/postprocess/TopNRuntimeFilterTest.java @@ -39,7 +39,7 @@ public void testUseTopNRf() { .rewrite() .implement(); PhysicalPlan plan = checker.getPhysicalPlan(); - new PlanPostProcessors(checker.getCascadesContext()).process(plan); + plan = new PlanPostProcessors(checker.getCascadesContext()).process(plan); Assertions.assertTrue(plan.children().get(0).child(0) instanceof PhysicalTopN); PhysicalTopN localTopN = (PhysicalTopN) plan.children().get(0).child(0); Assertions.assertTrue(localTopN.getMutableState(PhysicalTopN.TOPN_RUNTIME_FILTER).isPresent()); @@ -53,7 +53,7 @@ public void testNotUseTopNRf() { .rewrite() .implement(); PhysicalPlan plan = checker.getPhysicalPlan(); - new PlanPostProcessors(checker.getCascadesContext()).process(plan); + plan = new PlanPostProcessors(checker.getCascadesContext()).process(plan); Assertions.assertTrue(plan.children().get(0) instanceof PhysicalTopN); PhysicalTopN localTopN = (PhysicalTopN) plan.children().get(0); Assertions.assertFalse(localTopN.getMutableState(PhysicalTopN.TOPN_RUNTIME_FILTER).isPresent());