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 2023/04/19 13:35:00 UTC
[doris] 34/36: [Fix](planner)Fix TupleDescriptor include not materialized slot bug (#18783)
This is an automated email from the ASF dual-hosted git repository.
morningman pushed a commit to branch branch-2.0-alpha
in repository https://gitbox.apache.org/repos/asf/doris.git
commit 8bc6413866d59affa24d43c48816e30e0b38884c
Author: Jibing-Li <64...@users.noreply.github.com>
AuthorDate: Wed Apr 19 14:08:09 2023 +0800
[Fix](planner)Fix TupleDescriptor include not materialized slot bug (#18783)
setOutputSmap function in ScanNode may include not materialized to outputTupleDesc. This PR is to fix this.
---
.../src/main/java/org/apache/doris/planner/ScanNode.java | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/ScanNode.java b/fe/fe-core/src/main/java/org/apache/doris/planner/ScanNode.java
index 14cba2c3e0..13dd8638ba 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/planner/ScanNode.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/planner/ScanNode.java
@@ -516,7 +516,7 @@ public abstract class ScanNode extends PlanNode {
// create a tmpSmap for the later setOutputSmap call
ExprSubstitutionMap tmpSmap = new ExprSubstitutionMap(
Lists.newArrayList(outputTupleDesc.getSlots().stream().map(slot -> new SlotRef(slot)).collect(
- Collectors.toList())), Lists.newArrayList(projectList));
+ Collectors.toList())), Lists.newArrayList(projectList));
Set<SlotId> allOutputSlotIds = outputTupleDesc.getSlots().stream().map(slot -> slot.getId())
.collect(Collectors.toSet());
List<Expr> newRhs = Lists.newArrayList();
@@ -530,10 +530,14 @@ public abstract class ScanNode extends PlanNode {
slotDesc.initFromExpr(rhsExpr);
if (rhsExpr instanceof SlotRef) {
slotDesc.setSrcColumn(((SlotRef) rhsExpr).getColumn());
+ slotDesc.setIsMaterialized(((SlotRef) rhsExpr).getDesc().isMaterialized());
+ } else {
+ slotDesc.setIsMaterialized(true);
+ }
+ if (slotDesc.isMaterialized()) {
+ slotDesc.materializeSrcExpr();
+ projectList.add(rhsExpr);
}
- slotDesc.setIsMaterialized(true);
- slotDesc.materializeSrcExpr();
- projectList.add(rhsExpr);
newRhs.add(new SlotRef(slotDesc));
allOutputSlotIds.add(slotDesc.getId());
} else {
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org