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

Reply via email to