You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by mo...@apache.org on 2022/12/11 16:08:11 UTC

[doris] branch master updated: [fix](nereids) non-slotreference expr in order by lead to plan failed (#14895)

This is an automated email from the ASF dual-hosted git repository.

morrysnow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new 5fe5f596f2 [fix](nereids) non-slotreference expr in order by lead to plan failed (#14895)
5fe5f596f2 is described below

commit 5fe5f596f2e9de38be6d38b21ac7348fb319362a
Author: minghong <en...@gmail.com>
AuthorDate: Mon Dec 12 00:08:05 2022 +0800

    [fix](nereids) non-slotreference expr in order by lead to plan failed (#14895)
---
 .../glue/translator/PhysicalPlanTranslator.java       | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 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 0a8875989f..702e6e33ec 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
@@ -1099,18 +1099,21 @@ public class PhysicalPlanTranslator extends DefaultPlanVisitor<PlanFragment, Pla
     private TupleDescriptor generateTupleDesc(List<Slot> slotList, List<OrderKey> orderKeyList,
             PlanTranslatorContext context, Table table) {
         TupleDescriptor tupleDescriptor = context.generateTupleDesc();
-        tupleDescriptor.setTable(table);
         Set<ExprId> alreadyExists = Sets.newHashSet();
+        tupleDescriptor.setTable(table);
         for (OrderKey orderKey : orderKeyList) {
+            SlotReference slotReference;
             if (orderKey.getExpr() instanceof SlotReference) {
-                SlotReference slotReference = (SlotReference) orderKey.getExpr();
-                // TODO: trick here, we need semanticEquals to remove redundant expression
-                if (alreadyExists.contains(slotReference.getExprId())) {
-                    continue;
-                }
-                context.createSlotDesc(tupleDescriptor, (SlotReference) orderKey.getExpr());
-                alreadyExists.add(slotReference.getExprId());
+                slotReference = (SlotReference) orderKey.getExpr();
+            } else {
+                slotReference = (SlotReference) new Alias(orderKey.getExpr(), orderKey.getExpr().toString()).toSlot();
+            }
+            // TODO: trick here, we need semanticEquals to remove redundant expression
+            if (alreadyExists.contains(slotReference.getExprId())) {
+                continue;
             }
+            context.createSlotDesc(tupleDescriptor, slotReference);
+            alreadyExists.add(slotReference.getExprId());
         }
         for (Slot slot : slotList) {
             if (alreadyExists.contains(slot.getExprId())) {


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org