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 dfb610d7ec [fix](nereids) the order exprs in sort node should be 
slotRef in its tupleDesc (#16363)
dfb610d7ec is described below

commit dfb610d7ec2788a35845dadc754729793bf172fc
Author: starocean999 <[email protected]>
AuthorDate: Fri Feb 3 13:28:08 2023 +0800

    [fix](nereids) the order exprs in sort node should be slotRef in its 
tupleDesc (#16363)
---
 .../nereids/glue/translator/PhysicalPlanTranslator.java     | 13 ++++++-------
 .../suites/nereids_syntax_p0/test_join_nereids.groovy       |  3 +++
 2 files changed, 9 insertions(+), 7 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 b51bb7a700..b7eebd4562 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
@@ -646,14 +646,10 @@ public class PhysicalPlanTranslator extends 
DefaultPlanVisitor<PlanFragment, Pla
         outputList.forEach(k -> {
             sortTupleOutputList.add(ExpressionTranslator.translate(k, 
context));
         });
-        // 2. Generate new Tuple
-        TupleDescriptor tupleDesc = generateTupleDesc(outputList, 
orderKeyList, context, null);
-        // 3. Get current slotRef
+        // 2. Generate new Tuple and get current slotRef for 
newOrderingExprList
         List<Expr> newOrderingExprList = Lists.newArrayList();
-        orderKeyList.forEach(k -> {
-            
newOrderingExprList.add(ExpressionTranslator.translate(k.getExpr(), context));
-        });
-        // 4. fill in SortInfo members
+        TupleDescriptor tupleDesc = generateTupleDesc(outputList, 
orderKeyList, newOrderingExprList, context, null);
+        // 3. fill in SortInfo members
         SortInfo sortInfo = new SortInfo(newOrderingExprList, ascOrderList, 
nullsFirstParamList, tupleDesc);
         PlanNode childNode = childFragment.getPlanRoot();
         SortNode sortNode = new SortNode(context.nextPlanNodeId(), childNode, 
sortInfo, true);
@@ -1445,6 +1441,7 @@ public class PhysicalPlanTranslator extends 
DefaultPlanVisitor<PlanFragment, Pla
     }
 
     private TupleDescriptor generateTupleDesc(List<Slot> slotList, 
List<OrderKey> orderKeyList,
+            List<Expr> newOrderingExprList,
             PlanTranslatorContext context, Table table) {
         TupleDescriptor tupleDescriptor = context.generateTupleDesc();
         Set<ExprId> alreadyExists = Sets.newHashSet();
@@ -1458,9 +1455,11 @@ public class PhysicalPlanTranslator extends 
DefaultPlanVisitor<PlanFragment, Pla
             }
             // TODO: trick here, we need semanticEquals to remove redundant 
expression
             if (alreadyExists.contains(slotReference.getExprId())) {
+                
newOrderingExprList.add(context.findSlotRef(slotReference.getExprId()));
                 continue;
             }
             context.createSlotDesc(tupleDescriptor, slotReference);
+            
newOrderingExprList.add(context.findSlotRef(slotReference.getExprId()));
             alreadyExists.add(slotReference.getExprId());
         }
         for (Slot slot : slotList) {
diff --git a/regression-test/suites/nereids_syntax_p0/test_join_nereids.groovy 
b/regression-test/suites/nereids_syntax_p0/test_join_nereids.groovy
index 7b25521191..8a17fe34db 100644
--- a/regression-test/suites/nereids_syntax_p0/test_join_nereids.groovy
+++ b/regression-test/suites/nereids_syntax_p0/test_join_nereids.groovy
@@ -125,6 +125,7 @@ suite("test_join_nereids") {
     sql 'set enable_vectorized_engine=true;'
     sql 'set enable_fallback_to_original_planner=false;'
     sql 'set enable_nereids_planner=true;'
+    sql 'set parallel_fragment_exec_instance_num = 2;'
 
     qt_agg_sql1 """select 
/*+SET_VAR(disable_nereids_rules='TWO_PHASE_AGGREGATE_WITH_COUNT_DISTINCT_MULTI')*/
 count(distinct k1, NULL) from test;"""
     qt_agg_sql2 """select 
/*+SET_VAR(disable_nereids_rules='TWO_PHASE_AGGREGATE_WITH_COUNT_DISTINCT_MULTI')*/
 count(distinct k1, NULL), avg(k2) from baseall;"""
@@ -285,9 +286,11 @@ suite("test_join_nereids") {
             on a.k1 = b.k1 and a.k2 > 0 order by 1, isnull(b.k1), 2, 3, 4, 5 
limit 65535"""
     qt_left_join2"""select ${i} from ${tbName1} a left join ${tbName2} b 
             on a.k1 = b.k1 and a.k2 > b.k2 order by 1, isnull(b.k1), 2, 3, 4, 
5 limit 65535"""
+    sql 'set batch_size = 3;'
     qt_left_join3"""select ${i} from ${tbName1} a left join ${tbName2} b on 
a.k2 = b.k2 and a.k1 > 0 
             left join ${tbName3} c on a.k3 = c.k3 and b.k1 = c.k1 + 1 and c.k3 
> 0 
             order by 1, isnull(b.k1), 2, 3, 4, 5 limit 65535"""
+    sql 'set batch_size = 4064;'
 
     for (s in selected) {
         qt_left_join4"""select ${s} from ${tbName1} a left join ${tbName2} b 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to