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]