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:40:22 UTC

[incubator-doris] 01/02: [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 dev-1.0.1
in repository https://gitbox.apache.org/repos/asf/incubator-doris.git

commit 63053b7324aca293fa739b5cd3625d3aabc056b4
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 67ef3b5bf9..93082e3e30 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;
@@ -268,8 +269,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