From 0bd42a93fbc2b41c953376e653e9de6df3587598 Mon Sep 17 00:00:00 2001 From: FlashZXi Date: Fri, 5 Sep 2025 15:59:28 +0800 Subject: [PATCH 1/2] fix FilteredRules::filterValidRules --- .../main/java/org/apache/doris/nereids/rules/FilteredRules.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/FilteredRules.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/FilteredRules.java index 3d341629d16632..24b20311bc37fc 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/FilteredRules.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/FilteredRules.java @@ -112,7 +112,7 @@ public List filterValidRules(CascadesContext cascadesContext) { if (disableRules.isEmpty()) { return allRules; } - List validRules = new ArrayList<>(allRules); + List validRules = new ArrayList<>(); for (Rule rule : allRules) { if (!disableRules.get(rule.getRuleType().type())) { validRules.add(rule); From 2e8afeda581c9d3c58ab23f5115dc8861e620b6d Mon Sep 17 00:00:00 2001 From: FlashZXi Date: Thu, 11 Sep 2025 16:02:11 +0800 Subject: [PATCH 2/2] fix topDownVisitorRewriter use valid rules --- .../nereids/jobs/rewrite/TopDownVisitorRewriteJob.java | 7 +++---- .../java/org/apache/doris/nereids/rules/FilteredRules.java | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/rewrite/TopDownVisitorRewriteJob.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/rewrite/TopDownVisitorRewriteJob.java index 46c53f9bd5c506..f397c1716e0893 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/rewrite/TopDownVisitorRewriteJob.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/rewrite/TopDownVisitorRewriteJob.java @@ -20,6 +20,7 @@ import org.apache.doris.nereids.CascadesContext; import org.apache.doris.nereids.PlanProcess; import org.apache.doris.nereids.jobs.JobContext; +import org.apache.doris.nereids.rules.FilteredRules; import org.apache.doris.nereids.rules.Rule; import org.apache.doris.nereids.rules.Rules; import org.apache.doris.nereids.trees.plans.Plan; @@ -54,11 +55,9 @@ public void execute(JobContext jobContext) { } Plan root = rewrite( - null, -1, originPlan, jobContext, rules, false, new ProcessState(originPlan) + null, -1, originPlan, jobContext, relateRules.get(), false, new ProcessState(originPlan) ); jobContext.getCascadesContext().setRewritePlan(root); - - jobContext.getCascadesContext().setRewritePlan(root); } @Override @@ -142,6 +141,6 @@ public static Optional getRelatedRules(Plan plan, Rules originRules, Casc if (validRules.isEmpty()) { return Optional.empty(); } - return Optional.of(originRules); + return Optional.of(new FilteredRules(validRules)); } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/FilteredRules.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/FilteredRules.java index 24b20311bc37fc..ed1e95e4d14ffe 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/FilteredRules.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/FilteredRules.java @@ -112,7 +112,7 @@ public List filterValidRules(CascadesContext cascadesContext) { if (disableRules.isEmpty()) { return allRules; } - List validRules = new ArrayList<>(); + List validRules = new ArrayList<>(allRules.size()); for (Rule rule : allRules) { if (!disableRules.get(rule.getRuleType().type())) { validRules.add(rule);