From 83a20b45d6ab4d968d200cf2862acfedeb7d26df Mon Sep 17 00:00:00 2001 From: morrySnow Date: Mon, 24 Jul 2023 18:51:24 +0800 Subject: [PATCH] [fix](Nereids) translate partition topn order key on wrong 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 d9a8aba8ce0298..cc7993d6ddab76 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 PlanFragment visitPhysicalWindow(PhysicalWindow physicalW private PartitionSortNode translatePartitionSortNode(PhysicalPartitionTopN 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 @@ private PartitionSortNode translatePartitionSortNode(PhysicalPartitionTopN 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(),