diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/AddOffsetIntoDistribute.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/AddOffsetIntoDistribute.java index deac398869..dc81732129 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/AddOffsetIntoDistribute.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/AddOffsetIntoDistribute.java @@ -31,11 +31,12 @@ import org.apache.doris.nereids.trees.plans.physical.PhysicalLimit; public class AddOffsetIntoDistribute extends PlanPostProcessor { @Override public Plan visitPhysicalLimit(PhysicalLimit limit, CascadesContext context) { + limit = (PhysicalLimit) super.visit(limit, context); if (limit.getPhase().isLocal() || limit.getOffset() == 0) { return limit; } return new PhysicalDistribute<>(DistributionSpecGather.INSTANCE, - limit.withLimit(limit.getLimit() + limit.getOffset())); + limit.withLimit(limit.getLimit() + limit.getOffset())).copyStatsAndGroupIdFrom(limit); } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/PushDownFilterThroughProject.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/PushDownFilterThroughProject.java index 99b7d8a957..e0ee6bbd6f 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/PushDownFilterThroughProject.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/PushDownFilterThroughProject.java @@ -19,7 +19,6 @@ package org.apache.doris.nereids.processor.post; import org.apache.doris.nereids.CascadesContext; import org.apache.doris.nereids.trees.plans.Plan; -import org.apache.doris.nereids.trees.plans.physical.AbstractPhysicalPlan; import org.apache.doris.nereids.trees.plans.physical.PhysicalFilter; import org.apache.doris.nereids.trees.plans.physical.PhysicalProject; import org.apache.doris.nereids.util.ExpressionUtils; @@ -30,15 +29,10 @@ import org.apache.doris.nereids.util.ExpressionUtils; public class PushDownFilterThroughProject extends PlanPostProcessor { @Override public Plan visitPhysicalFilter(PhysicalFilter filter, CascadesContext context) { + filter = (PhysicalFilter) super.visit(filter, context); Plan child = filter.child(); if (!(child instanceof PhysicalProject)) { - Plan newChild = child.accept(this, context); - if (newChild == child) { - return filter; - } else { - return ((AbstractPhysicalPlan) filter.withChildren(child.accept(this, context))) - .copyStatsAndGroupIdFrom(filter); - } + return filter; } PhysicalProject project = (PhysicalProject) child;