This is an automated email from the ASF dual-hosted git repository. morningman pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-doris.git
The following commit(s) were added to refs/heads/master by this push: new 2ed523440f [fix](planner) passthrough child in SetOperationNode is wrong when enable vector engine (#9991) 2ed523440f is described below commit 2ed523440f2a04629182d2feafde10b43efd1c65 Author: morrySnow <101034200+morrys...@users.noreply.github.com> AuthorDate: Wed Jun 8 14:12:04 2022 +0800 [fix](planner) passthrough child in SetOperationNode is wrong when enable vector engine (#9991) In SetOperationNode we do passthrough, if we child output is same with itself output. In method isChildPassthrough we only consider memory layout. When we use vectorized engine, we need to use SlotDesc offset in TupleDesc instead of memory layout to check whether pass-through can be performed --- .../main/java/org/apache/doris/planner/SetOperationNode.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/SetOperationNode.java b/fe/fe-core/src/main/java/org/apache/doris/planner/SetOperationNode.java index e751af42df..12b3a93fe9 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/planner/SetOperationNode.java +++ b/fe/fe-core/src/main/java/org/apache/doris/planner/SetOperationNode.java @@ -25,6 +25,7 @@ import org.apache.doris.analysis.TupleDescriptor; import org.apache.doris.analysis.TupleId; import org.apache.doris.common.CheckedMath; import org.apache.doris.common.UserException; +import org.apache.doris.common.util.VectorizedUtil; import org.apache.doris.thrift.TExceptNode; import org.apache.doris.thrift.TExplainLevel; import org.apache.doris.thrift.TExpr; @@ -282,8 +283,14 @@ public abstract class SetOperationNode extends PlanNode { if (childSlotRef == null) { return false; } - if (!childSlotRef.getDesc().layoutEquals(setOpSlotRef.getDesc())) { - return false; + if (VectorizedUtil.isVectorized()) { + if (childSlotRef.getDesc().getSlotOffset() != setOpSlotRef.getDesc().getSlotOffset()) { + return false; + } + } else { + if (!childSlotRef.getDesc().layoutEquals(setOpSlotRef.getDesc())) { + return false; + } } } return true; --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org