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