Skip to content

Commit dfb610d

Browse files
authored
[fix](nereids) the order exprs in sort node should be slotRef in its tupleDesc (#16363)
1 parent a917756 commit dfb610d

2 files changed

Lines changed: 9 additions & 7 deletions

File tree

fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/PhysicalPlanTranslator.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -646,14 +646,10 @@ public PlanFragment visitAbstractPhysicalSort(
646646
outputList.forEach(k -> {
647647
sortTupleOutputList.add(ExpressionTranslator.translate(k, context));
648648
});
649-
// 2. Generate new Tuple
650-
TupleDescriptor tupleDesc = generateTupleDesc(outputList, orderKeyList, context, null);
651-
// 3. Get current slotRef
649+
// 2. Generate new Tuple and get current slotRef for newOrderingExprList
652650
List<Expr> newOrderingExprList = Lists.newArrayList();
653-
orderKeyList.forEach(k -> {
654-
newOrderingExprList.add(ExpressionTranslator.translate(k.getExpr(), context));
655-
});
656-
// 4. fill in SortInfo members
651+
TupleDescriptor tupleDesc = generateTupleDesc(outputList, orderKeyList, newOrderingExprList, context, null);
652+
// 3. fill in SortInfo members
657653
SortInfo sortInfo = new SortInfo(newOrderingExprList, ascOrderList, nullsFirstParamList, tupleDesc);
658654
PlanNode childNode = childFragment.getPlanRoot();
659655
SortNode sortNode = new SortNode(context.nextPlanNodeId(), childNode, sortInfo, true);
@@ -1445,6 +1441,7 @@ private TupleDescriptor generateTupleDesc(List<Slot> slotList, TableIf table, Pl
14451441
}
14461442

14471443
private TupleDescriptor generateTupleDesc(List<Slot> slotList, List<OrderKey> orderKeyList,
1444+
List<Expr> newOrderingExprList,
14481445
PlanTranslatorContext context, Table table) {
14491446
TupleDescriptor tupleDescriptor = context.generateTupleDesc();
14501447
Set<ExprId> alreadyExists = Sets.newHashSet();
@@ -1458,9 +1455,11 @@ private TupleDescriptor generateTupleDesc(List<Slot> slotList, List<OrderKey> or
14581455
}
14591456
// TODO: trick here, we need semanticEquals to remove redundant expression
14601457
if (alreadyExists.contains(slotReference.getExprId())) {
1458+
newOrderingExprList.add(context.findSlotRef(slotReference.getExprId()));
14611459
continue;
14621460
}
14631461
context.createSlotDesc(tupleDescriptor, slotReference);
1462+
newOrderingExprList.add(context.findSlotRef(slotReference.getExprId()));
14641463
alreadyExists.add(slotReference.getExprId());
14651464
}
14661465
for (Slot slot : slotList) {

regression-test/suites/nereids_syntax_p0/test_join_nereids.groovy

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,7 @@ suite("test_join_nereids") {
125125
sql 'set enable_vectorized_engine=true;'
126126
sql 'set enable_fallback_to_original_planner=false;'
127127
sql 'set enable_nereids_planner=true;'
128+
sql 'set parallel_fragment_exec_instance_num = 2;'
128129

129130
qt_agg_sql1 """select /*+SET_VAR(disable_nereids_rules='TWO_PHASE_AGGREGATE_WITH_COUNT_DISTINCT_MULTI')*/ count(distinct k1, NULL) from test;"""
130131
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") {
285286
on a.k1 = b.k1 and a.k2 > 0 order by 1, isnull(b.k1), 2, 3, 4, 5 limit 65535"""
286287
qt_left_join2"""select ${i} from ${tbName1} a left join ${tbName2} b
287288
on a.k1 = b.k1 and a.k2 > b.k2 order by 1, isnull(b.k1), 2, 3, 4, 5 limit 65535"""
289+
sql 'set batch_size = 3;'
288290
qt_left_join3"""select ${i} from ${tbName1} a left join ${tbName2} b on a.k2 = b.k2 and a.k1 > 0
289291
left join ${tbName3} c on a.k3 = c.k3 and b.k1 = c.k1 + 1 and c.k3 > 0
290292
order by 1, isnull(b.k1), 2, 3, 4, 5 limit 65535"""
293+
sql 'set batch_size = 4064;'
291294

292295
for (s in selected) {
293296
qt_left_join4"""select ${s} from ${tbName1} a left join ${tbName2} b

0 commit comments

Comments
 (0)