You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by mm...@apache.org on 2018/08/24 16:35:39 UTC

hive git commit: HIVE-20352: Vectorization: Support grouping function (Matt McCline, reviewed by Teddy Choi)

Repository: hive
Updated Branches:
  refs/heads/master cc38bcc5a -> c7235932b


HIVE-20352: Vectorization: Support grouping function (Matt McCline, reviewed by Teddy Choi)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/c7235932
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/c7235932
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/c7235932

Branch: refs/heads/master
Commit: c7235932b0011cd0336af6ecd138529c5e08c5a9
Parents: cc38bcc
Author: Matt McCline <mm...@hortonworks.com>
Authored: Fri Aug 24 09:35:22 2018 -0700
Committer: Matt McCline <mm...@hortonworks.com>
Committed: Fri Aug 24 09:35:22 2018 -0700

----------------------------------------------------------------------
 .../ql/exec/vector/VectorizationContext.java    | 49 ++++++++++++++
 .../exec/vector/expressions/GroupingColumn.java | 54 +++++++++++++++
 .../vector/expressions/GroupingColumns.java     | 69 ++++++++++++++++++++
 .../vector_groupby_grouping_sets_grouping.q.out | 54 +++++++--------
 4 files changed, 199 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/c7235932/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java
index d6bfa7a..b7feb1c 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java
@@ -2074,6 +2074,8 @@ public class VectorizationContext {
 
       // Elt is a special case because it can take variable number of arguments.
       ve = getEltExpression(childExpr, returnType);
+    } else if (udf instanceof GenericUDFGrouping) {
+      ve = getGroupingExpression((GenericUDFGrouping) udf, childExpr, returnType);
     } else if (udf instanceof GenericUDFBridge) {
       ve = getGenericUDFBridgeVectorExpression((GenericUDFBridge) udf, childExpr, mode,
           returnType);
@@ -2195,6 +2197,53 @@ public class VectorizationContext {
     return vectorElt;
   }
 
+  private VectorExpression getGroupingExpression(GenericUDFGrouping udf,
+      List<ExprNodeDesc> childExprs, TypeInfo returnType)
+          throws HiveException {
+
+    ExprNodeDesc childExpr0 = childExprs.get(0);
+    if (!(childExpr0 instanceof ExprNodeColumnDesc)) {
+      return null;
+    }
+    ExprNodeColumnDesc groupingIdColDesc = (ExprNodeColumnDesc) childExpr0;
+    int groupingIdColNum = getInputColumnIndex(groupingIdColDesc.getColumn());
+
+    final int indexCount = childExprs.size() - 1;
+    int[] indices = new int[indexCount];
+    for (int i = 0; i < indexCount; i++) {
+      ExprNodeDesc indexChildExpr = childExprs.get(i + 1);
+      if (!(indexChildExpr instanceof ExprNodeConstantDesc)) {
+        return null;
+      }
+      Object scalarObject = ((ExprNodeConstantDesc) indexChildExpr).getValue();
+      final int index;
+      if (scalarObject instanceof Integer) {
+        index = (int) scalarObject;
+      } else if (scalarObject instanceof Long) {
+        index = (int) ((long) scalarObject);
+      } else {
+        return null;
+      }
+      indices[i] = index;
+    }
+
+    final int outputColumnNum = ocm.allocateOutputColumn(returnType);
+    final VectorExpression ve;
+    if (indices.length == 1) {
+      ve = new GroupingColumn(groupingIdColNum, indices[0], outputColumnNum);
+    } else {
+      ve = new GroupingColumns(groupingIdColNum, indices, outputColumnNum);
+    }
+
+    ve.setInputTypeInfos(groupingIdColDesc.getTypeInfo());
+    ve.setInputDataTypePhysicalVariations(DataTypePhysicalVariation.NONE);
+
+    ve.setOutputTypeInfo(returnType);
+    ve.setOutputDataTypePhysicalVariation(DataTypePhysicalVariation.NONE);
+
+    return ve;
+  }
+
   public enum InConstantType {
     INT_FAMILY,
     TIMESTAMP,

http://git-wip-us.apache.org/repos/asf/hive/blob/c7235932/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/GroupingColumn.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/GroupingColumn.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/GroupingColumn.java
new file mode 100644
index 0000000..9bad386
--- /dev/null
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/GroupingColumn.java
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hadoop.hive.ql.exec.vector.expressions;
+
+import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor;
+
+public class GroupingColumn extends MathFuncLongToLong {
+  private static final long serialVersionUID = 1L;
+
+  private final long mask;
+
+  public GroupingColumn(int inputColumnNum, int index, int outputColumnNum) {
+    super(inputColumnNum, outputColumnNum);
+    this.mask = 1L << index;
+  }
+
+  public GroupingColumn() {
+    super();
+
+    // Dummy final assignments.
+    mask = 0;
+  }
+
+  @Override
+  protected long func(long v) {
+    return (v & mask) == 0 ? 0 : 1;
+  }
+
+  @Override
+  public String vectorExpressionParameters() {
+    return "col " + colNum + ", mask " + mask;
+  }
+
+  @Override
+  public VectorExpressionDescriptor.Descriptor getDescriptor() {
+    return null;  // Not applicable.
+  }
+}

http://git-wip-us.apache.org/repos/asf/hive/blob/c7235932/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/GroupingColumns.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/GroupingColumns.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/GroupingColumns.java
new file mode 100644
index 0000000..b59204e
--- /dev/null
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/GroupingColumns.java
@@ -0,0 +1,69 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hadoop.hive.ql.exec.vector.expressions;
+
+import java.util.Arrays;
+
+import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor;
+
+public class GroupingColumns extends MathFuncLongToLong {
+  private static final long serialVersionUID = 1L;
+
+  private final long[] masks;
+
+  public GroupingColumns(int inputColumnNum, int[] indices, int outputColumnNum) {
+    super(inputColumnNum, outputColumnNum);
+    final int size = indices.length;
+    masks = new long[size];
+    for (int i = 0; i < size; i++) {
+      masks[i] = 1L << indices[i];
+    }
+  }
+
+  public GroupingColumns() {
+    super();
+
+    // Dummy final assignments.
+    masks = null;
+  }
+
+  @Override
+  protected long func(long v) {
+
+    final int size = masks.length;
+    final int adjust = size - 1;
+    long result = 0;
+    for (int i = 0; i < size; i++) {
+      if ((v & masks[i]) != 0) {
+        result += 1L << (adjust - i);
+      }
+    }
+    return result;
+  }
+
+  @Override
+  public String vectorExpressionParameters() {
+    return "col " + colNum + ", masks " + Arrays.toString(masks);
+  }
+
+  @Override
+  public VectorExpressionDescriptor.Descriptor getDescriptor() {
+    return null;  // Not applicable.
+  }
+}

http://git-wip-us.apache.org/repos/asf/hive/blob/c7235932/ql/src/test/results/clientpositive/llap/vector_groupby_grouping_sets_grouping.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/vector_groupby_grouping_sets_grouping.q.out b/ql/src/test/results/clientpositive/llap/vector_groupby_grouping_sets_grouping.q.out
index 9501927..d75f2d8 100644
--- a/ql/src/test/results/clientpositive/llap/vector_groupby_grouping_sets_grouping.q.out
+++ b/ql/src/test/results/clientpositive/llap/vector_groupby_grouping_sets_grouping.q.out
@@ -118,7 +118,7 @@ STAGE PLANS:
                 reduceColumnNullOrder: aaa
                 reduceColumnSortOrder: +++
                 allNative: false
-                usesVectorUDFAdaptor: true
+                usesVectorUDFAdaptor: false
                 vectorized: true
                 rowBatchContext:
                     dataColumnCount: 3
@@ -145,7 +145,7 @@ STAGE PLANS:
                       className: VectorSelectOperator
                       native: true
                       projectedOutputColumnNums: [0, 1, 2, 3, 4]
-                      selectExpressions: VectorUDFAdaptor(grouping(_col2, 1)) -> 3:bigint, VectorUDFAdaptor(grouping(_col2, 0)) -> 4:bigint
+                      selectExpressions: GroupingColumn(col 2, mask 2) -> 3:bigint, GroupingColumn(col 2, mask 1) -> 4:bigint
                   Statistics: Num rows: 9 Data size: 72 Basic stats: COMPLETE Column stats: NONE
                   File Output Operator
                     compressed: false
@@ -279,7 +279,7 @@ STAGE PLANS:
                 reduceColumnNullOrder: aaa
                 reduceColumnSortOrder: +++
                 allNative: false
-                usesVectorUDFAdaptor: true
+                usesVectorUDFAdaptor: false
                 vectorized: true
                 rowBatchContext:
                     dataColumnCount: 3
@@ -306,7 +306,7 @@ STAGE PLANS:
                       className: VectorSelectOperator
                       native: true
                       projectedOutputColumnNums: [0, 1, 2, 3, 4]
-                      selectExpressions: VectorUDFAdaptor(grouping(_col2, 1)) -> 3:bigint, VectorUDFAdaptor(grouping(_col2, 0)) -> 4:bigint
+                      selectExpressions: GroupingColumn(col 2, mask 2) -> 3:bigint, GroupingColumn(col 2, mask 1) -> 4:bigint
                   Statistics: Num rows: 12 Data size: 96 Basic stats: COMPLETE Column stats: NONE
                   File Output Operator
                     compressed: false
@@ -447,7 +447,7 @@ STAGE PLANS:
                 reduceColumnNullOrder: aaa
                 reduceColumnSortOrder: +++
                 allNative: false
-                usesVectorUDFAdaptor: true
+                usesVectorUDFAdaptor: false
                 vectorized: true
                 rowBatchContext:
                     dataColumnCount: 3
@@ -471,7 +471,7 @@ STAGE PLANS:
                   Filter Vectorization:
                       className: VectorFilterOperator
                       native: true
-                      predicateExpression: FilterLongColEqualLongScalar(col 3:bigint, val 1)(children: VectorUDFAdaptor(grouping(_col2, 1)) -> 3:bigint)
+                      predicateExpression: FilterLongColEqualLongScalar(col 3:bigint, val 1)(children: GroupingColumn(col 2, mask 2) -> 3:bigint)
                   predicate: (grouping(_col2, 1) = 1) (type: boolean)
                   Statistics: Num rows: 6 Data size: 48 Basic stats: COMPLETE Column stats: NONE
                   Select Operator
@@ -616,7 +616,7 @@ STAGE PLANS:
                 reduceColumnNullOrder: aaa
                 reduceColumnSortOrder: +++
                 allNative: false
-                usesVectorUDFAdaptor: true
+                usesVectorUDFAdaptor: false
                 vectorized: true
                 rowBatchContext:
                     dataColumnCount: 3
@@ -640,7 +640,7 @@ STAGE PLANS:
                   Filter Vectorization:
                       className: VectorFilterOperator
                       native: true
-                      predicateExpression: FilterExprOrExpr(children: FilterLongColEqualLongScalar(col 3:bigint, val 1)(children: VectorUDFAdaptor(grouping(_col2, 1)) -> 3:bigint), FilterLongColEqualLongScalar(col 3:bigint, val 1)(children: VectorUDFAdaptor(grouping(_col2, 0)) -> 3:bigint))
+                      predicateExpression: FilterExprOrExpr(children: FilterLongColEqualLongScalar(col 3:bigint, val 1)(children: GroupingColumn(col 2, mask 2) -> 3:bigint), FilterLongColEqualLongScalar(col 3:bigint, val 1)(children: GroupingColumn(col 2, mask 1) -> 3:bigint))
                   predicate: ((grouping(_col2, 0) = 1) or (grouping(_col2, 1) = 1)) (type: boolean)
                   Statistics: Num rows: 12 Data size: 96 Basic stats: COMPLETE Column stats: NONE
                   Select Operator
@@ -650,7 +650,7 @@ STAGE PLANS:
                         className: VectorSelectOperator
                         native: true
                         projectedOutputColumnNums: [0, 1, 5, 4]
-                        selectExpressions: LongColAddLongColumn(col 3:bigint, col 4:bigint)(children: VectorUDFAdaptor(grouping(_col2, 1)) -> 3:bigint, VectorUDFAdaptor(grouping(_col2, 0)) -> 4:bigint) -> 5:bigint, IfExprColumnNull(col 3:boolean, col 0:int, null)(children: LongColEqualLongScalar(col 6:bigint, val 1)(children: LongColAddLongColumn(col 3:bigint, col 4:bigint)(children: VectorUDFAdaptor(grouping(_col2, 1)) -> 3:bigint, VectorUDFAdaptor(grouping(_col2, 0)) -> 4:bigint) -> 6:bigint) -> 3:boolean, col 0:int) -> 4:int
+                        selectExpressions: LongColAddLongColumn(col 3:bigint, col 4:bigint)(children: GroupingColumn(col 2, mask 2) -> 3:bigint, GroupingColumn(col 2, mask 1) -> 4:bigint) -> 5:bigint, IfExprColumnNull(col 3:boolean, col 0:int, null)(children: LongColEqualLongScalar(col 6:bigint, val 1)(children: LongColAddLongColumn(col 3:bigint, col 4:bigint)(children: GroupingColumn(col 2, mask 2) -> 3:bigint, GroupingColumn(col 2, mask 1) -> 4:bigint) -> 6:bigint) -> 3:boolean, col 0:int) -> 4:int
                     Statistics: Num rows: 12 Data size: 96 Basic stats: COMPLETE Column stats: NONE
                     Reduce Output Operator
                       key expressions: _col2 (type: bigint), _col3 (type: int)
@@ -822,7 +822,7 @@ STAGE PLANS:
                 reduceColumnNullOrder: aaa
                 reduceColumnSortOrder: +++
                 allNative: false
-                usesVectorUDFAdaptor: true
+                usesVectorUDFAdaptor: false
                 vectorized: true
                 rowBatchContext:
                     dataColumnCount: 3
@@ -849,7 +849,7 @@ STAGE PLANS:
                       className: VectorSelectOperator
                       native: true
                       projectedOutputColumnNums: [0, 1, 2, 3, 4]
-                      selectExpressions: VectorUDFAdaptor(grouping(_col2, 1L)) -> 3:bigint, VectorUDFAdaptor(grouping(_col2, 0L)) -> 4:bigint
+                      selectExpressions: GroupingColumn(col 2, mask 2) -> 3:bigint, GroupingColumn(col 2, mask 1) -> 4:bigint
                   Statistics: Num rows: 9 Data size: 72 Basic stats: COMPLETE Column stats: NONE
                   File Output Operator
                     compressed: false
@@ -983,7 +983,7 @@ STAGE PLANS:
                 reduceColumnNullOrder: aaa
                 reduceColumnSortOrder: +++
                 allNative: false
-                usesVectorUDFAdaptor: true
+                usesVectorUDFAdaptor: false
                 vectorized: true
                 rowBatchContext:
                     dataColumnCount: 3
@@ -1010,7 +1010,7 @@ STAGE PLANS:
                       className: VectorSelectOperator
                       native: true
                       projectedOutputColumnNums: [0, 1, 2, 3, 4]
-                      selectExpressions: VectorUDFAdaptor(grouping(_col2, 1L)) -> 3:bigint, VectorUDFAdaptor(grouping(_col2, 0L)) -> 4:bigint
+                      selectExpressions: GroupingColumn(col 2, mask 2) -> 3:bigint, GroupingColumn(col 2, mask 1) -> 4:bigint
                   Statistics: Num rows: 12 Data size: 96 Basic stats: COMPLETE Column stats: NONE
                   File Output Operator
                     compressed: false
@@ -1119,7 +1119,7 @@ STAGE PLANS:
                         Filter Vectorization:
                             className: VectorFilterOperator
                             native: true
-                            predicateExpression: FilterLongColEqualLongScalar(col 3:bigint, val 1)(children: VectorUDFAdaptor(grouping(_col2, 1L)) -> 3:bigint)
+                            predicateExpression: FilterLongColEqualLongScalar(col 3:bigint, val 1)(children: GroupingColumn(col 2, mask 2) -> 3:bigint)
                         predicate: (grouping(_col2, 1L) = 1) (type: boolean)
                         Statistics: Num rows: 12 Data size: 96 Basic stats: COMPLETE Column stats: NONE
                         Reduce Output Operator
@@ -1142,7 +1142,7 @@ STAGE PLANS:
                 featureSupportInUse: [DECIMAL_64]
                 inputFileFormats: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat
                 allNative: false
-                usesVectorUDFAdaptor: true
+                usesVectorUDFAdaptor: false
                 vectorized: true
                 rowBatchContext:
                     dataColumnCount: 2
@@ -1281,7 +1281,7 @@ STAGE PLANS:
                         Filter Vectorization:
                             className: VectorFilterOperator
                             native: true
-                            predicateExpression: FilterExprOrExpr(children: FilterLongColEqualLongScalar(col 3:bigint, val 1)(children: VectorUDFAdaptor(grouping(_col2, 1L)) -> 3:bigint), FilterLongColEqualLongScalar(col 3:bigint, val 1)(children: VectorUDFAdaptor(grouping(_col2, 0L)) -> 3:bigint))
+                            predicateExpression: FilterExprOrExpr(children: FilterLongColEqualLongScalar(col 3:bigint, val 1)(children: GroupingColumn(col 2, mask 2) -> 3:bigint), FilterLongColEqualLongScalar(col 3:bigint, val 1)(children: GroupingColumn(col 2, mask 1) -> 3:bigint))
                         predicate: ((grouping(_col2, 0L) = 1) or (grouping(_col2, 1L) = 1)) (type: boolean)
                         Statistics: Num rows: 24 Data size: 192 Basic stats: COMPLETE Column stats: NONE
                         Reduce Output Operator
@@ -1304,7 +1304,7 @@ STAGE PLANS:
                 featureSupportInUse: [DECIMAL_64]
                 inputFileFormats: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat
                 allNative: false
-                usesVectorUDFAdaptor: true
+                usesVectorUDFAdaptor: false
                 vectorized: true
                 rowBatchContext:
                     dataColumnCount: 2
@@ -1320,7 +1320,7 @@ STAGE PLANS:
                 reduceColumnNullOrder: aaa
                 reduceColumnSortOrder: +++
                 allNative: false
-                usesVectorUDFAdaptor: true
+                usesVectorUDFAdaptor: false
                 vectorized: true
                 rowBatchContext:
                     dataColumnCount: 3
@@ -1347,7 +1347,7 @@ STAGE PLANS:
                       className: VectorSelectOperator
                       native: true
                       projectedOutputColumnNums: [0, 1, 5]
-                      selectExpressions: LongColAddLongColumn(col 3:bigint, col 4:bigint)(children: VectorUDFAdaptor(grouping(_col2, 1L)) -> 3:bigint, VectorUDFAdaptor(grouping(_col2, 0L)) -> 4:bigint) -> 5:bigint
+                      selectExpressions: LongColAddLongColumn(col 3:bigint, col 4:bigint)(children: GroupingColumn(col 2, mask 2) -> 3:bigint, GroupingColumn(col 2, mask 1) -> 4:bigint) -> 5:bigint
                   Statistics: Num rows: 12 Data size: 96 Basic stats: COMPLETE Column stats: NONE
                   Reduce Output Operator
                     key expressions: _col2 (type: bigint), CASE WHEN ((_col2 = 1L)) THEN (_col0) END (type: int)
@@ -1983,7 +1983,7 @@ STAGE PLANS:
                 reduceColumnNullOrder: aaa
                 reduceColumnSortOrder: +++
                 allNative: false
-                usesVectorUDFAdaptor: true
+                usesVectorUDFAdaptor: false
                 vectorized: true
                 rowBatchContext:
                     dataColumnCount: 3
@@ -2010,7 +2010,7 @@ STAGE PLANS:
                       className: VectorSelectOperator
                       native: true
                       projectedOutputColumnNums: [0, 1, 2, 3]
-                      selectExpressions: VectorUDFAdaptor(grouping(_col2, 1L, 0L)) -> 3:bigint
+                      selectExpressions: GroupingColumns(col 2, masks [2, 1]) -> 3:bigint
                   Statistics: Num rows: 12 Data size: 96 Basic stats: COMPLETE Column stats: NONE
                   File Output Operator
                     compressed: false
@@ -2149,7 +2149,7 @@ STAGE PLANS:
                 reduceColumnNullOrder: aaa
                 reduceColumnSortOrder: +++
                 allNative: false
-                usesVectorUDFAdaptor: true
+                usesVectorUDFAdaptor: false
                 vectorized: true
                 rowBatchContext:
                     dataColumnCount: 3
@@ -2176,7 +2176,7 @@ STAGE PLANS:
                       className: VectorSelectOperator
                       native: true
                       projectedOutputColumnNums: [0, 1, 2, 3]
-                      selectExpressions: VectorUDFAdaptor(grouping(_col2, 0L, 1L)) -> 3:bigint
+                      selectExpressions: GroupingColumns(col 2, masks [1, 2]) -> 3:bigint
                   Statistics: Num rows: 12 Data size: 96 Basic stats: COMPLETE Column stats: NONE
                   File Output Operator
                     compressed: false
@@ -2315,7 +2315,7 @@ STAGE PLANS:
                 reduceColumnNullOrder: aaa
                 reduceColumnSortOrder: +++
                 allNative: false
-                usesVectorUDFAdaptor: true
+                usesVectorUDFAdaptor: false
                 vectorized: true
                 rowBatchContext:
                     dataColumnCount: 3
@@ -2342,7 +2342,7 @@ STAGE PLANS:
                       className: VectorSelectOperator
                       native: true
                       projectedOutputColumnNums: [0, 1, 2, 3]
-                      selectExpressions: VectorUDFAdaptor(grouping(_col2, 1L, 0L)) -> 3:bigint
+                      selectExpressions: GroupingColumns(col 2, masks [2, 1]) -> 3:bigint
                   Statistics: Num rows: 9 Data size: 72 Basic stats: COMPLETE Column stats: NONE
                   File Output Operator
                     compressed: false
@@ -2476,7 +2476,7 @@ STAGE PLANS:
                 reduceColumnNullOrder: aaa
                 reduceColumnSortOrder: +++
                 allNative: false
-                usesVectorUDFAdaptor: true
+                usesVectorUDFAdaptor: false
                 vectorized: true
                 rowBatchContext:
                     dataColumnCount: 3
@@ -2503,7 +2503,7 @@ STAGE PLANS:
                       className: VectorSelectOperator
                       native: true
                       projectedOutputColumnNums: [0, 1, 2, 3]
-                      selectExpressions: VectorUDFAdaptor(grouping(_col2, 0L, 1L)) -> 3:bigint
+                      selectExpressions: GroupingColumns(col 2, masks [1, 2]) -> 3:bigint
                   Statistics: Num rows: 9 Data size: 72 Basic stats: COMPLETE Column stats: NONE
                   File Output Operator
                     compressed: false