From 82bdcb3da80e8385ac058c6c0a03e16cb4c6bdfd Mon Sep 17 00:00:00 2001 From: morrySnow <101034200+morrySnow@users.noreply.github.com> Date: Mon, 24 Jul 2023 20:46:27 +0800 Subject: [PATCH] [fix](Nereids) translate partition topn order key on wrong tuple (#22168) partition key should on child tuple, sort key should on partition top's tuple --- .../nereids/glue/translator/PhysicalPlanTranslator.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/PhysicalPlanTranslator.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/PhysicalPlanTranslator.java index d9a8aba8ce..cc7993d6dd 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/PhysicalPlanTranslator.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/PhysicalPlanTranslator.java @@ -1861,6 +1861,10 @@ public class PhysicalPlanTranslator extends DefaultPlanVisitor partitionTopN, PlanNode childNode, PlanTranslatorContext context) { + List partitionExprs = partitionTopN.getPartitionKeys().stream() + .map(e -> ExpressionTranslator.translate(e, context)) + .collect(Collectors.toList()); + // partition key should on child tuple, sort key should on partition top's tuple TupleDescriptor sortTuple = generateTupleDesc(partitionTopN.child().getOutput(), null, context); List orderingExprs = Lists.newArrayList(); List ascOrders = Lists.newArrayList(); @@ -1871,9 +1875,6 @@ public class PhysicalPlanTranslator extends DefaultPlanVisitor partitionExprs = partitionTopN.getPartitionKeys().stream() - .map(e -> ExpressionTranslator.translate(e, context)) - .collect(Collectors.toList()); SortInfo sortInfo = new SortInfo(orderingExprs, ascOrders, nullsFirstParams, sortTuple); PartitionSortNode partitionSortNode = new PartitionSortNode(context.nextPlanNodeId(), childNode, partitionTopN.getFunction(), partitionExprs, sortInfo, partitionTopN.hasGlobalLimit(),