diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/Operator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/Operator.java index b88a25800a..52ab43029a 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/Operator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/Operator.java @@ -87,6 +87,7 @@ protected transient long runTimeNumRows; protected int indexForTezUnion = -1; private transient Configuration hconf; + private transient boolean multiChildren; protected final transient Collection> asyncInitOperations = new HashSet<>(); // It can be optimized later so that an operator operator (init/close) is performed @@ -340,6 +341,7 @@ public final void initialize(Configuration hconf, ObjectInspector[] inputOIs) inputObjInspectors = inputOIs; } + multiChildren = childOperators.size() > 1; // while initializing so this need to be done here instead of constructor childOperatorsArray = new Operator[childOperators.size()]; for (int i = 0; i < childOperatorsArray.length; i++) { @@ -896,7 +898,7 @@ protected void forward(Object row, ObjectInspector rowInspector) protected void forward(Object row, ObjectInspector rowInspector, boolean isVectorized) throws HiveException { - if (isVectorized && getNumChild() > 1) { + if (isVectorized && multiChildren) { vectorForward((VectorizedRowBatch) row, rowInspector); return; }