This is an automated email from the ASF dual-hosted git repository. kxiao pushed a commit to branch branch-2.0 in repository https://gitbox.apache.org/repos/asf/doris.git
commit e04bc61b2e545a73d53884931ab85c35e5af666f Author: morrySnow <[email protected]> AuthorDate: Tue Oct 24 18:40:56 2023 +0800 [fix](Nereids) order by with cte cannot bind (#25794) --- .../doris/nereids/rules/analysis/BindExpression.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/BindExpression.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/BindExpression.java index 6f21d621964..420e6303e0a 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/BindExpression.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/BindExpression.java @@ -54,7 +54,7 @@ import org.apache.doris.nereids.trees.plans.Plan; import org.apache.doris.nereids.trees.plans.algebra.Aggregate; 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.LogicalCTE; +import org.apache.doris.nereids.trees.plans.logical.LogicalCTEAnchor; import org.apache.doris.nereids.trees.plans.logical.LogicalCTEConsumer; import org.apache.doris.nereids.trees.plans.logical.LogicalExcept; import org.apache.doris.nereids.trees.plans.logical.LogicalFilter; @@ -408,17 +408,19 @@ public class BindExpression implements AnalysisRuleFactory { LogicalProject<Plan> project = sort.child(); return bindSort(sort, project, ctx.cascadesContext); }) - ), RuleType.BINDING_SORT_SLOT.build( + ), + RuleType.BINDING_SORT_SLOT.build( logicalSort(logicalCTEConsumer()).thenApply(ctx -> { LogicalSort<LogicalCTEConsumer> sort = ctx.root; LogicalCTEConsumer cteConsumer = sort.child(); return bindSort(sort, cteConsumer, ctx.cascadesContext); }) - ), RuleType.BINDING_SORT_SLOT.build( - logicalSort(logicalCTE()).thenApply(ctx -> { - LogicalSort<LogicalCTE<Plan>> sort = ctx.root; - LogicalCTE<Plan> cteConsumer = sort.child(); - return bindSort(sort, cteConsumer, ctx.cascadesContext); + ), + RuleType.BINDING_SORT_SLOT.build( + logicalSort(logicalCTEAnchor()).thenApply(ctx -> { + LogicalSort<LogicalCTEAnchor<Plan, Plan>> sort = ctx.root; + LogicalCTEAnchor<Plan, Plan> cteAnchor = sort.child(); + return bindSort(sort, cteAnchor, ctx.cascadesContext); }) ), RuleType.BINDING_SORT_SET_OPERATION_SLOT.build( --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
