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 2022/06/08 06:12:10 UTC

[incubator-doris] branch master updated: [fix](planner) passthrough child in SetOperationNode is wrong when enable vector engine (#9991)

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 <10...@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-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org