http://git-wip-us.apache.org/repos/asf/hive/blob/edc53cc0/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorNull.java
----------------------------------------------------------------------
diff --git 
a/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorNull.java
 
b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorNull.java
new file mode 100644
index 0000000..a4fc0d57
--- /dev/null
+++ 
b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorNull.java
@@ -0,0 +1,513 @@
+/*
+ * 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.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Random;
+
+import org.apache.hadoop.hive.common.type.DataTypePhysicalVariation;
+import org.apache.hadoop.hive.common.type.HiveChar;
+import org.apache.hadoop.hive.common.type.HiveVarchar;
+import org.apache.hadoop.hive.conf.HiveConf;
+import org.apache.hadoop.hive.ql.exec.ExprNodeEvaluator;
+import org.apache.hadoop.hive.ql.exec.ExprNodeEvaluatorFactory;
+import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor;
+import org.apache.hadoop.hive.ql.exec.vector.VectorExtractRow;
+import org.apache.hadoop.hive.ql.exec.vector.VectorRandomBatchSource;
+import org.apache.hadoop.hive.ql.exec.vector.VectorRandomRowSource;
+import 
org.apache.hadoop.hive.ql.exec.vector.VectorRandomRowSource.SupportedTypes;
+import org.apache.hadoop.hive.ql.exec.vector.VectorizationContext;
+import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch;
+import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatchCtx;
+import 
org.apache.hadoop.hive.ql.exec.vector.VectorRandomRowSource.GenerationSpec;
+import org.apache.hadoop.hive.ql.exec.vector.expressions.IdentityExpression;
+import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression;
+import 
org.apache.hadoop.hive.ql.exec.vector.expressions.TestVectorArithmetic.ColumnScalarMode;
+import org.apache.hadoop.hive.ql.exec.vector.udf.VectorUDFAdaptor;
+import org.apache.hadoop.hive.ql.metadata.HiveException;
+import org.apache.hadoop.hive.ql.metadata.VirtualColumn;
+import org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc;
+import org.apache.hadoop.hive.ql.plan.ExprNodeConstantDesc;
+import org.apache.hadoop.hive.ql.plan.ExprNodeDesc;
+import org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc;
+import org.apache.hadoop.hive.ql.udf.generic.GenericUDF;
+import org.apache.hadoop.hive.ql.udf.generic.GenericUDFBetween;
+import org.apache.hadoop.hive.ql.udf.generic.GenericUDFIn;
+import org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPNot;
+import org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPNotNull;
+import org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPNull;
+import org.apache.hadoop.hive.serde2.io.DoubleWritable;
+import org.apache.hadoop.hive.serde2.io.HiveCharWritable;
+import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable;
+import org.apache.hadoop.hive.serde2.io.HiveVarcharWritable;
+import org.apache.hadoop.hive.serde2.objectinspector.ConstantObjectInspector;
+import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
+import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorUtils;
+import 
org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorUtils.ObjectInspectorCopyOption;
+import 
org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector.PrimitiveCategory;
+import 
org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
+import org.apache.hadoop.hive.serde2.typeinfo.CharTypeInfo;
+import org.apache.hadoop.hive.serde2.typeinfo.DecimalTypeInfo;
+import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo;
+import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
+import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory;
+import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoUtils;
+import org.apache.hadoop.hive.serde2.typeinfo.VarcharTypeInfo;
+import org.apache.hadoop.io.BooleanWritable;
+import org.apache.hadoop.io.LongWritable;
+import org.apache.hadoop.io.Text;
+import org.apache.hadoop.io.WritableComparator;
+import org.apache.hadoop.io.WritableComparable;
+
+import junit.framework.Assert;
+
+import org.junit.Ignore;
+import org.junit.Test;
+
+public class TestVectorNull {
+
+  @Test
+  public void testIsNull() throws Exception {
+    Random random = new Random(5371);
+
+    doNull(random, "isnull");
+  }
+
+  @Test
+  public void testIsNotNull() throws Exception {
+    Random random = new Random(2772);
+
+    doNull(random, "isnotnull");
+  }
+
+  @Test
+  public void testNot() throws Exception {
+    Random random = new Random(2772);
+
+    doNull(random, "not");
+  }
+
+  public enum NullTestMode {
+    ROW_MODE,
+    ADAPTOR,
+    VECTOR_EXPRESSION;
+
+    static final int count = values().length;
+  }
+
+  private void doNull(Random random, String functionName)
+      throws Exception {
+
+    // Several different random types...
+    doIsNullOnRandomDataType(random, functionName, true);
+    doIsNullOnRandomDataType(random, functionName, true);
+    doIsNullOnRandomDataType(random, functionName, true);
+
+    doIsNullOnRandomDataType(random, functionName, false);
+    doIsNullOnRandomDataType(random, functionName, false);
+    doIsNullOnRandomDataType(random, functionName, false);
+  }
+
+  private boolean doIsNullOnRandomDataType(Random random, String functionName, 
boolean isFilter)
+      throws Exception {
+
+    String typeName;
+    if (functionName.equals("not")) {
+      typeName = "boolean";
+    } else {
+      typeName =
+          VectorRandomRowSource.getRandomTypeName(
+              random, SupportedTypes.ALL, /* allowedTypeNameSet */ null);
+      typeName =
+          VectorRandomRowSource.getDecoratedTypeName(
+              random, typeName, SupportedTypes.ALL, /* allowedTypeNameSet */ 
null,
+              /* depth */ 0, /* maxDepth */ 2);
+    }
+
+    TypeInfo typeInfo = TypeInfoUtils.getTypeInfoFromTypeString(typeName);
+
+    
//----------------------------------------------------------------------------------------------
+
+    ObjectInspector objectInspector =
+        TypeInfoUtils.getStandardWritableObjectInspectorFromTypeInfo(
+            typeInfo);
+
+    
//----------------------------------------------------------------------------------------------
+
+    GenerationSpec generationSpec = GenerationSpec.createSameType(typeInfo);
+
+    List<GenerationSpec> generationSpecList = new ArrayList<GenerationSpec>();
+    List<DataTypePhysicalVariation> explicitDataTypePhysicalVariationList =
+        new ArrayList<DataTypePhysicalVariation>();
+    generationSpecList.add(generationSpec);
+    explicitDataTypePhysicalVariationList.add(DataTypePhysicalVariation.NONE);
+
+    VectorRandomRowSource rowSource = new VectorRandomRowSource();
+
+    rowSource.initGenerationSpecSchema(
+        random, generationSpecList, /* maxComplexDepth */ 0, /* allowNull */ 
true,
+        explicitDataTypePhysicalVariationList);
+
+    List<String> columns = new ArrayList<String>();
+    columns.add("col1");
+    ExprNodeColumnDesc col1Expr = new ExprNodeColumnDesc(typeInfo, "col1", 
"table", false);
+
+    List<ExprNodeDesc> children = new ArrayList<ExprNodeDesc>();
+    children.add(col1Expr);
+
+    String[] columnNames = columns.toArray(new String[0]);
+
+    Object[][] randomRows = rowSource.randomRows(100000);
+
+    VectorRandomBatchSource batchSource =
+        VectorRandomBatchSource.createInterestingBatches(
+            random,
+            rowSource,
+            randomRows,
+            null);
+
+    final GenericUDF udf;
+    final ObjectInspector outputObjectInspector;
+    switch (functionName) {
+    case "isnull":
+      udf = new GenericUDFOPNull();
+      break;
+    case "isnotnull":
+      udf = new GenericUDFOPNotNull();
+      break;
+    case "not":
+      udf = new GenericUDFOPNot();
+      break;
+    default:
+      throw new RuntimeException("Unexpected function name " + functionName);
+    }
+
+    ObjectInspector[] argumentOIs = new ObjectInspector[] { objectInspector };
+    outputObjectInspector = udf.initialize(argumentOIs);
+
+    TypeInfo outputTypeInfo = 
TypeInfoUtils.getTypeInfoFromObjectInspector(outputObjectInspector);
+
+    ExprNodeGenericFuncDesc exprDesc =
+        new ExprNodeGenericFuncDesc(
+            TypeInfoFactory.booleanTypeInfo, udf, children);
+
+    final int rowCount = randomRows.length;
+    Object[][] resultObjectsArray = new Object[NullTestMode.count][];
+    for (int i = 0; i < NullTestMode.count; i++) {
+
+      Object[] resultObjects = new Object[rowCount];
+      resultObjectsArray[i] = resultObjects;
+
+      NullTestMode nullTestMode = NullTestMode.values()[i];
+      switch (nullTestMode) {
+      case ROW_MODE:
+        if (!doRowCastTest(
+              typeInfo,
+              isFilter,
+              columns,
+              children,
+              udf, exprDesc,
+              randomRows,
+              rowSource.rowStructObjectInspector(),
+              resultObjects)) {
+          return false;
+        }
+        break;
+      case ADAPTOR:
+      case VECTOR_EXPRESSION:
+        if (!doVectorCastTest(
+              typeInfo,
+              isFilter,
+              columns,
+              columnNames,
+              rowSource.typeInfos(),
+              rowSource.dataTypePhysicalVariations(),
+              children,
+              udf, exprDesc,
+              nullTestMode,
+              batchSource,
+              exprDesc.getWritableObjectInspector(),
+              outputTypeInfo,
+              resultObjects)) {
+          return false;
+        }
+        break;
+      default:
+        throw new RuntimeException("Unexpected IF statement test mode " + 
nullTestMode);
+      }
+    }
+
+    for (int i = 0; i < rowCount; i++) {
+      // Row-mode is the expected value.
+      Object expectedResult = resultObjectsArray[0][i];
+
+      for (int v = 1; v < NullTestMode.count; v++) {
+        Object vectorResult = resultObjectsArray[v][i];
+        NullTestMode nullTestMode = NullTestMode.values()[v];
+        if (isFilter &&
+            expectedResult == null &&
+            vectorResult != null) {
+          // This is OK.
+          boolean vectorBoolean = ((BooleanWritable) vectorResult).get();
+          if (vectorBoolean) {
+            Assert.fail(
+                "Row " + i +
+                " typeName " + typeName +
+                " outputTypeName " + outputTypeInfo.getTypeName() +
+                " isFilter " + isFilter +
+                " " + nullTestMode +
+                " result is NOT NULL and true" +
+                " does not match row-mode expected result is NULL which means 
false here" +
+                " row values " + Arrays.toString(randomRows[i]) +
+                " exprDesc " + exprDesc.toString());
+          }
+        } else if (expectedResult == null || vectorResult == null) {
+          if (expectedResult != null || vectorResult != null) {
+            Assert.fail(
+                "Row " + i +
+                " sourceTypeName " + typeName +
+                " isFilter " + isFilter +
+                " " + nullTestMode +
+                " result is NULL " + (vectorResult == null ? "YES" : "NO 
result " + vectorResult.toString()) +
+                " does not match row-mode expected result is NULL " +
+                (expectedResult == null ? "YES" : "NO result " + 
expectedResult.toString()) +
+                " row values " + Arrays.toString(randomRows[i]) +
+                " exprDesc " + exprDesc.toString());
+          }
+        } else {
+
+          if (!expectedResult.equals(vectorResult)) {
+            Assert.fail(
+                "Row " + i +
+                " sourceTypeName " + typeName +
+                " isFilter " + isFilter +
+                " " + nullTestMode +
+                " result " + vectorResult.toString() +
+                " (" + vectorResult.getClass().getSimpleName() + ")" +
+                " does not match row-mode expected result " + 
expectedResult.toString() +
+                " (" + expectedResult.getClass().getSimpleName() + ")" +
+                " row values " + Arrays.toString(randomRows[i]) +
+                " exprDesc " + exprDesc.toString());
+          }
+        }
+      }
+    }
+    return true;
+  }
+
+  private boolean doRowCastTest(TypeInfo typeInfo, boolean isFilter,
+      List<String> columns, List<ExprNodeDesc> children,
+      GenericUDF udf, ExprNodeGenericFuncDesc exprDesc,
+      Object[][] randomRows,
+      ObjectInspector rowInspector, Object[] resultObjects)
+          throws Exception {
+
+    /*
+    System.out.println(
+        "*DEBUG* typeInfo " + typeInfo.toString() +
+        " targetTypeInfo " + targetTypeInfo +
+        " nullTestMode ROW_MODE" +
+        " exprDesc " + exprDesc.toString());
+    */
+
+    HiveConf hiveConf = new HiveConf();
+    ExprNodeEvaluator evaluator =
+        ExprNodeEvaluatorFactory.get(exprDesc, hiveConf);
+    try {
+        evaluator.initialize(rowInspector);
+    } catch (HiveException e) {
+      return false;
+    }
+
+    final int rowCount = randomRows.length;
+    for (int i = 0; i < rowCount; i++) {
+      Object[] row = randomRows[i];
+      Object result = evaluator.evaluate(row);
+      Object copyResult =
+          ObjectInspectorUtils.copyToStandardObject(
+              result, 
PrimitiveObjectInspectorFactory.writableBooleanObjectInspector,
+              ObjectInspectorCopyOption.WRITABLE);
+      resultObjects[i] = copyResult;
+    }
+
+    return true;
+  }
+
+  private void extractResultObjects(VectorizedRowBatch batch, int rowIndex,
+      VectorExtractRow resultVectorExtractRow, Object[] scrqtchRow,
+      ObjectInspector objectInspector, Object[] resultObjects) {
+
+    boolean selectedInUse = batch.selectedInUse;
+    int[] selected = batch.selected;
+    for (int logicalIndex = 0; logicalIndex < batch.size; logicalIndex++) {
+      final int batchIndex = (selectedInUse ? selected[logicalIndex] : 
logicalIndex);
+      resultVectorExtractRow.extractRow(batch, batchIndex, scrqtchRow);
+
+      Object copyResult =
+          ObjectInspectorUtils.copyToStandardObject(
+              scrqtchRow[0], objectInspector, 
ObjectInspectorCopyOption.WRITABLE);
+      resultObjects[rowIndex++] = copyResult;
+    }
+  }
+
+  private boolean doVectorCastTest(TypeInfo typeInfo, boolean isFilter,
+      List<String> columns, String[] columnNames,
+      TypeInfo[] typeInfos, DataTypePhysicalVariation[] 
dataTypePhysicalVariations,
+      List<ExprNodeDesc> children,
+      GenericUDF udf, ExprNodeGenericFuncDesc exprDesc,
+      NullTestMode nullTestMode,
+      VectorRandomBatchSource batchSource,
+      ObjectInspector objectInspector,
+      TypeInfo outputTypeInfo, Object[] resultObjects)
+          throws Exception {
+
+    HiveConf hiveConf = new HiveConf();
+    if (nullTestMode == NullTestMode.ADAPTOR) {
+      hiveConf.setBoolVar(HiveConf.ConfVars.HIVE_TEST_VECTOR_ADAPTOR_OVERRIDE, 
true);
+    }
+
+    VectorizationContext vectorizationContext =
+        new VectorizationContext(
+            "name",
+            columns,
+            Arrays.asList(typeInfos),
+            Arrays.asList(dataTypePhysicalVariations),
+            hiveConf);
+    VectorExpression vectorExpression =
+        vectorizationContext.getVectorExpression(exprDesc,
+            (isFilter ?
+                VectorExpressionDescriptor.Mode.FILTER :
+                VectorExpressionDescriptor.Mode.PROJECTION));
+    vectorExpression.transientInit();
+
+    if (nullTestMode == NullTestMode.VECTOR_EXPRESSION &&
+        vectorExpression instanceof VectorUDFAdaptor) {
+      System.out.println(
+          "*NO NATIVE VECTOR EXPRESSION* typeInfo " + typeInfo.toString() +
+          " nullTestMode " + nullTestMode +
+          " isFilter " + isFilter +
+          " vectorExpression " + vectorExpression.toString());
+    }
+
+    System.out.println("*VECTOR EXPRESSION* " + 
vectorExpression.getClass().getSimpleName());
+
+    /*
+    System.out.println(
+        "*DEBUG* typeInfo " + typeInfo.toString() +
+        " nullTestMode " + nullTestMode +
+        " isFilter " + isFilter +
+        " vectorExpression " + vectorExpression.toString());
+    */
+
+    VectorRandomRowSource rowSource = batchSource.getRowSource();
+    VectorizedRowBatchCtx batchContext =
+        new VectorizedRowBatchCtx(
+            columnNames,
+            rowSource.typeInfos(),
+            rowSource.dataTypePhysicalVariations(),
+            /* dataColumnNums */ null,
+            /* partitionColumnCount */ 0,
+            /* virtualColumnCount */ 0,
+            /* neededVirtualColumns */ null,
+            vectorizationContext.getScratchColumnTypeNames(),
+            vectorizationContext.getScratchDataTypePhysicalVariations());
+
+    VectorizedRowBatch batch = batchContext.createVectorizedRowBatch();
+
+    VectorExtractRow resultVectorExtractRow = null;
+    Object[] scrqtchRow = null;
+    if (!isFilter) {
+      resultVectorExtractRow = new VectorExtractRow();
+      final int outputColumnNum = vectorExpression.getOutputColumnNum();
+      resultVectorExtractRow.init(
+          new TypeInfo[] { outputTypeInfo }, new int[] { outputColumnNum });
+      scrqtchRow = new Object[1];
+    }
+
+    boolean copySelectedInUse = false;
+    int[] copySelected = new int[VectorizedRowBatch.DEFAULT_SIZE];
+
+    batchSource.resetBatchIteration();
+    int rowIndex = 0;
+    while (true) {
+      if (!batchSource.fillNextBatch(batch)) {
+        break;
+      }
+      final int originalBatchSize = batch.size;
+      if (isFilter) {
+        copySelectedInUse = batch.selectedInUse;
+        if (batch.selectedInUse) {
+          System.arraycopy(batch.selected, 0, copySelected, 0, 
originalBatchSize);
+        }
+      }
+
+      // In filter mode, the batch size can be made smaller.
+      vectorExpression.evaluate(batch);
+
+      if (!isFilter) {
+        extractResultObjects(batch, rowIndex, resultVectorExtractRow, 
scrqtchRow,
+            objectInspector, resultObjects);
+      } else {
+        final int currentBatchSize = batch.size;
+        if (copySelectedInUse && batch.selectedInUse) {
+          int selectIndex = 0;
+          for (int i = 0; i < originalBatchSize; i++) {
+            final int originalBatchIndex = copySelected[i];
+            final boolean booleanResult;
+            if (selectIndex < currentBatchSize && batch.selected[selectIndex] 
== originalBatchIndex) {
+              booleanResult = true;
+              selectIndex++;
+            } else {
+              booleanResult = false;
+            }
+            resultObjects[rowIndex + i] = new BooleanWritable(booleanResult);
+          }
+        } else if (batch.selectedInUse) {
+          int selectIndex = 0;
+          for (int i = 0; i < originalBatchSize; i++) {
+            final boolean booleanResult;
+            if (selectIndex < currentBatchSize && batch.selected[selectIndex] 
== i) {
+              booleanResult = true;
+              selectIndex++;
+            } else {
+              booleanResult = false;
+            }
+            resultObjects[rowIndex + i] = new BooleanWritable(booleanResult);
+          }
+        } else if (currentBatchSize == 0) {
+          // Whole batch got zapped.
+          for (int i = 0; i < originalBatchSize; i++) {
+            resultObjects[rowIndex + i] = new BooleanWritable(false);
+          }
+        } else {
+          // Every row kept.
+          for (int i = 0; i < originalBatchSize; i++) {
+            resultObjects[rowIndex + i] = new BooleanWritable(true);
+          }
+        }
+      }
+
+      rowIndex += originalBatchSize;
+    }
+
+    return true;
+  }
+}

http://git-wip-us.apache.org/repos/asf/hive/blob/edc53cc0/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorStringConcat.java
----------------------------------------------------------------------
diff --git 
a/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorStringConcat.java
 
b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorStringConcat.java
index 69fd70c..8877b06 100644
--- 
a/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorStringConcat.java
+++ 
b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorStringConcat.java
@@ -145,7 +145,7 @@ public class TestVectorStringConcat {
         new ArrayList<DataTypePhysicalVariation>();
 
     List<String> columns = new ArrayList<String>();
-    int columnNum = 0;
+    int columnNum = 1;
     ExprNodeDesc col1Expr;
     if (columnScalarMode == ColumnScalarMode.COLUMN_COLUMN ||
         columnScalarMode == ColumnScalarMode.COLUMN_SCALAR) {

http://git-wip-us.apache.org/repos/asf/hive/blob/edc53cc0/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorStringUnary.java
----------------------------------------------------------------------
diff --git 
a/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorStringUnary.java
 
b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorStringUnary.java
index f029358..dd53157 100644
--- 
a/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorStringUnary.java
+++ 
b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorStringUnary.java
@@ -133,7 +133,7 @@ public class TestVectorStringUnary {
         new ArrayList<DataTypePhysicalVariation>();
 
     List<String> columns = new ArrayList<String>();
-    int columnNum = 0;
+    int columnNum = 1;
     ExprNodeDesc col1Expr;
     StringGenerationOption stringGenerationOption =
         new StringGenerationOption(true, true);

http://git-wip-us.apache.org/repos/asf/hive/blob/edc53cc0/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorSubStr.java
----------------------------------------------------------------------
diff --git 
a/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorSubStr.java
 
b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorSubStr.java
index 694f6f7..a978782 100644
--- 
a/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorSubStr.java
+++ 
b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorSubStr.java
@@ -102,7 +102,7 @@ public class TestVectorSubStr {
         new ArrayList<DataTypePhysicalVariation>();
 
     List<String> columns = new ArrayList<String>();
-    int columnNum = 0;
+    int columnNum = 1;
     ExprNodeDesc col1Expr;
     StringGenerationOption stringGenerationOption =
         new StringGenerationOption(true, true);

http://git-wip-us.apache.org/repos/asf/hive/blob/edc53cc0/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorTimestampExtract.java
----------------------------------------------------------------------
diff --git 
a/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorTimestampExtract.java
 
b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorTimestampExtract.java
index 5d5e4c9..c31bec5 100644
--- 
a/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorTimestampExtract.java
+++ 
b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorTimestampExtract.java
@@ -118,7 +118,7 @@ public class TestVectorTimestampExtract {
         new ArrayList<DataTypePhysicalVariation>();
 
     List<String> columns = new ArrayList<String>();
-    int columnNum = 0;
+    int columnNum = 1;
     ExprNodeDesc col1Expr;
     if (!isStringFamily) {
       generationSpecList.add(

http://git-wip-us.apache.org/repos/asf/hive/blob/edc53cc0/ql/src/test/results/clientpositive/llap/vector_annotate_stats_select.q.out
----------------------------------------------------------------------
diff --git 
a/ql/src/test/results/clientpositive/llap/vector_annotate_stats_select.q.out 
b/ql/src/test/results/clientpositive/llap/vector_annotate_stats_select.q.out
index 46faa7f..371ca10 100644
--- a/ql/src/test/results/clientpositive/llap/vector_annotate_stats_select.q.out
+++ b/ql/src/test/results/clientpositive/llap/vector_annotate_stats_select.q.out
@@ -814,25 +814,38 @@ STAGE PLANS:
                 TableScan
                   alias: alltypes_orc_n4
                   Statistics: Num rows: 2 Data size: 1686 Basic stats: 
COMPLETE Column stats: COMPLETE
+                  TableScan Vectorization:
+                      native: true
                   Select Operator
                     expressions: D317B6 (type: binary)
                     outputColumnNames: _col0
+                    Select Vectorization:
+                        className: VectorSelectOperator
+                        native: true
+                        projectedOutputColumnNums: [16]
+                        selectExpressions: ConstantVectorExpression(val 
��) -> 16:binary
                     Statistics: Num rows: 2 Data size: 96 Basic stats: 
COMPLETE Column stats: COMPLETE
                     File Output Operator
                       compressed: false
+                      File Sink Vectorization:
+                          className: VectorFileSinkOperator
+                          native: false
                       Statistics: Num rows: 2 Data size: 96 Basic stats: 
COMPLETE Column stats: COMPLETE
                       table:
                           input format: 
org.apache.hadoop.mapred.SequenceFileInputFormat
                           output format: 
org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
                           serde: 
org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
-            Execution mode: llap
+            Execution mode: vectorized, llap
             LLAP IO: all inputs
             Map Vectorization:
                 enabled: true
                 enabledConditionsMet: 
hive.vectorized.use.vectorized.input.format IS true
+                inputFormatFeatureSupport: [DECIMAL_64]
+                featureSupportInUse: [DECIMAL_64]
                 inputFileFormats: 
org.apache.hadoop.hive.ql.io.orc.OrcInputFormat
-                notVectorizedReason: SELECT operator: Unsupported constant 
type: binary, object class byte[]
-                vectorized: false
+                allNative: false
+                usesVectorUDFAdaptor: false
+                vectorized: true
 
   Stage: Stage-0
     Fetch Operator

http://git-wip-us.apache.org/repos/asf/hive/blob/edc53cc0/ql/src/test/results/clientpositive/llap/vector_between_in.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/vector_between_in.q.out 
b/ql/src/test/results/clientpositive/llap/vector_between_in.q.out
index 12ae103..801dda3 100644
--- a/ql/src/test/results/clientpositive/llap/vector_between_in.q.out
+++ b/ql/src/test/results/clientpositive/llap/vector_between_in.q.out
@@ -1390,7 +1390,7 @@ STAGE PLANS:
                         className: VectorSelectOperator
                         native: true
                         projectedOutputColumnNums: [5]
-                        selectExpressions: VectorUDFAdaptor(cdate BETWEEN 
DATE'1969-12-30' AND DATE'1970-01-02') -> 5:boolean
+                        selectExpressions: LongColumnBetween(col 3:date, left 
-2, right 1) -> 5:boolean
                     Statistics: Num rows: 12289 Data size: 653856 Basic stats: 
COMPLETE Column stats: NONE
                     Group By Operator
                       aggregations: count()
@@ -1425,7 +1425,7 @@ STAGE PLANS:
                 featureSupportInUse: [DECIMAL_64]
                 inputFileFormats: 
org.apache.hadoop.hive.ql.io.orc.OrcInputFormat
                 allNative: false
-                usesVectorUDFAdaptor: true
+                usesVectorUDFAdaptor: false
                 vectorized: true
         Reducer 2 
             Execution mode: vectorized, llap
@@ -1528,7 +1528,7 @@ STAGE PLANS:
                         className: VectorSelectOperator
                         native: true
                         projectedOutputColumnNums: [5]
-                        selectExpressions: VectorUDFAdaptor(cdecimal1 NOT 
BETWEEN -2000 AND 4390.1351351351) -> 5:boolean
+                        selectExpressions: DecimalColumnNotBetween(col 
1:decimal(20,10), left -2000, right 4390.1351351351) -> 5:boolean
                     Statistics: Num rows: 12289 Data size: 1307712 Basic 
stats: COMPLETE Column stats: NONE
                     Group By Operator
                       aggregations: count()
@@ -1563,7 +1563,7 @@ STAGE PLANS:
                 featureSupportInUse: [DECIMAL_64]
                 inputFileFormats: 
org.apache.hadoop.hive.ql.io.orc.OrcInputFormat
                 allNative: false
-                usesVectorUDFAdaptor: true
+                usesVectorUDFAdaptor: false
                 vectorized: true
         Reducer 2 
             Execution mode: vectorized, llap

http://git-wip-us.apache.org/repos/asf/hive/blob/edc53cc0/ql/src/test/results/clientpositive/llap/vector_case_when_2.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/vector_case_when_2.q.out 
b/ql/src/test/results/clientpositive/llap/vector_case_when_2.q.out
index 85a8056..cd78689 100644
--- a/ql/src/test/results/clientpositive/llap/vector_case_when_2.q.out
+++ b/ql/src/test/results/clientpositive/llap/vector_case_when_2.q.out
@@ -408,7 +408,7 @@ STAGE PLANS:
                         className: VectorSelectOperator
                         native: true
                         projectedOutputColumnNums: [1, 3, 10, 12, 13, 14, 11, 
7, 16, 23, 2]
-                        selectExpressions: 
IfExprStringScalarStringGroupColumn(col 5:boolean, val 1800s or Earliercol 
9:string)(children: TimestampColLessEqualTimestampScalar(col 3:timestamp, val 
1800-12-31 00:00:00) -> 5:boolean, IfExprStringScalarStringGroupColumn(col 
6:boolean, val 1900scol 10:string)(children: 
TimestampColLessTimestampScalar(col 3:timestamp, val 1900-01-01 00:00:00) -> 
6:boolean, IfExprStringScalarStringGroupColumn(col 7:boolean, val Late 2000scol 
9:string)(children: VectorUDFAdaptor(ctimestamp2 BETWEEN TIMESTAMP'2006-01-01 
00:00:00' AND TIMESTAMP'2010-12-31 23:59:59.999999999') -> 7:boolean, 
IfExprStringScalarStringScalar(col 8:boolean, val Early 2010s, val 
Unknown)(children: TimestampColLessEqualTimestampScalar(col 3:timestamp, val 
2015-12-31 23:59:59.999999999) -> 8:boolean) -> 9:string) -> 10:string) -> 
9:string) -> 10:string, IfExprStringScalarStringGroupColumn(col 5:boolean, val 
Oldcol 11:string)(children: TimestampColLessEqualTimestampScalar(col 3:timesta
 mp, val 2000-12-31 23:59:59.999999999) -> 5:boolean, 
IfExprStringScalarStringGroupColumn(col 6:boolean, val Early 2000scol 
12:string)(children: TimestampColLessTimestampScalar(col 3:timestamp, val 
2006-01-01 00:00:00) -> 6:boolean, IfExprStringScalarStringGroupColumn(col 
7:boolean, val Late 2000scol 11:string)(children: VectorUDFAdaptor(ctimestamp2 
BETWEEN TIMESTAMP'2006-01-01 00:00:00' AND TIMESTAMP'2010-12-31 
23:59:59.999999999') -> 7:boolean, IfExprColumnNull(col 8:boolean, col 
9:string, null)(children: TimestampColLessEqualTimestampScalar(col 3:timestamp, 
val 2015-12-31 23:59:59.999999999) -> 8:boolean, ConstantVectorExpression(val 
Early 2010s) -> 9:string) -> 11:string) -> 12:string) -> 11:string) -> 
12:string, IfExprStringScalarStringGroupColumn(col 5:boolean, val Oldcol 
11:string)(children: TimestampColLessEqualTimestampScalar(col 3:timestamp, val 
2000-12-31 23:59:59.999999999) -> 5:boolean, 
IfExprStringScalarStringGroupColumn(col 6:boolean, val Early 2000scol 
13:string)(chil
 dren: TimestampColLessTimestampScalar(col 3:timestamp, val 2006-01-01 
00:00:00) -> 6:boolean, IfExprStringScalarStringGroupColumn(col 7:boolean, val 
Late 2000scol 11:string)(children: VectorUDFAdaptor(ctimestamp2 BETWEEN 
TIMESTAMP'2006-01-01 00:00:00' AND TIMESTAMP'2010-12-31 23:59:59.999999999') -> 
7:boolean, IfExprNullNull(null, null) -> 11:string) -> 13:string) -> 11:string) 
-> 13:string, IfExprLongColumnLongColumn(col 5:boolean, col 6:int, col 
7:int)(children: TimestampColLessTimestampScalar(col 1:timestamp, val 
1974-10-04 17:21:03.989) -> 5:boolean, VectorUDFYearTimestamp(col 1:timestamp, 
field YEAR) -> 6:int, VectorUDFYearTimestamp(col 3:timestamp, field YEAR) -> 
7:int) -> 14:int, VectorUDFAdaptor(CASE WHEN ((stimestamp1 like '%19%')) THEN 
(stimestamp1) ELSE (TIMESTAMP'2018-03-08 23:04:59') END)(children: 
SelectStringColLikeStringScalar(col 2:string) -> 5:boolean) -> 11:string, 
IfExprNullColumn(col 5:boolean, null, col 6)(children: 
TimestampColEqualTimestampScalar(col 1:timest
 amp, val 2021-09-24 03:18:32.413655165) -> 5:boolean, 
VectorUDFMinuteTimestamp(col 1:timestamp, field MINUTE) -> 6:int) -> 7:int, 
IfExprColumnNull(col 17:boolean, col 15:int, null)(children: ColAndCol(col 
15:boolean, col 16:boolean)(children: 
TimestampColGreaterEqualTimestampScalar(col 3:timestamp, val 5344-10-04 
18:40:08.165) -> 15:boolean, TimestampColLessTimestampScalar(col 3:timestamp, 
val 6631-11-13 16:31:29.702202248) -> 16:boolean) -> 17:boolean, 
VectorUDFMinuteTimestamp(col 1:timestamp, field MINUTE) -> 15:int) -> 16:int, 
IfExprLongColumnLongColumn(col 20:boolean, col 21:date, col 22:date)(children: 
DoubleColGreaterDoubleScalar(col 19:double, val 100.0)(children: 
DoubleColModuloDoubleScalar(col 18:double, val 500.0)(children: 
CastTimestampToDouble(col 1:timestamp) -> 18:double) -> 19:double) -> 
20:boolean, VectorUDFDateAddColScalar(col 0:date, val 1) -> 21:date, 
VectorUDFDateAddColScalar(col 0:date, val 365) -> 22:date) -> 23:date
+                        selectExpressions: 
IfExprStringScalarStringGroupColumn(col 5:boolean, val 1800s or Earliercol 
9:string)(children: TimestampColLessEqualTimestampScalar(col 3:timestamp, val 
1800-12-31 00:00:00) -> 5:boolean, IfExprStringScalarStringGroupColumn(col 
6:boolean, val 1900scol 10:string)(children: 
TimestampColLessTimestampScalar(col 3:timestamp, val 1900-01-01 00:00:00) -> 
6:boolean, IfExprStringScalarStringGroupColumn(col 7:boolean, val Late 2000scol 
9:string)(children: TimestampColumnBetween(col 3:timestamp, left 2005-12-31 
16:00:00.0, right 2010-12-31 15:59:59.999999999) -> 7:boolean, 
IfExprStringScalarStringScalar(col 8:boolean, val Early 2010s, val 
Unknown)(children: TimestampColLessEqualTimestampScalar(col 3:timestamp, val 
2015-12-31 23:59:59.999999999) -> 8:boolean) -> 9:string) -> 10:string) -> 
9:string) -> 10:string, IfExprStringScalarStringGroupColumn(col 5:boolean, val 
Oldcol 11:string)(children: TimestampColLessEqualTimestampScalar(col 
3:timestamp, val 2
 000-12-31 23:59:59.999999999) -> 5:boolean, 
IfExprStringScalarStringGroupColumn(col 6:boolean, val Early 2000scol 
12:string)(children: TimestampColLessTimestampScalar(col 3:timestamp, val 
2006-01-01 00:00:00) -> 6:boolean, IfExprStringScalarStringGroupColumn(col 
7:boolean, val Late 2000scol 11:string)(children: TimestampColumnBetween(col 
3:timestamp, left 2005-12-31 16:00:00.0, right 2010-12-31 15:59:59.999999999) 
-> 7:boolean, IfExprColumnNull(col 8:boolean, col 9:string, null)(children: 
TimestampColLessEqualTimestampScalar(col 3:timestamp, val 2015-12-31 
23:59:59.999999999) -> 8:boolean, ConstantVectorExpression(val Early 2010s) -> 
9:string) -> 11:string) -> 12:string) -> 11:string) -> 12:string, 
IfExprStringScalarStringGroupColumn(col 5:boolean, val Oldcol 
11:string)(children: TimestampColLessEqualTimestampScalar(col 3:timestamp, val 
2000-12-31 23:59:59.999999999) -> 5:boolean, 
IfExprStringScalarStringGroupColumn(col 6:boolean, val Early 2000scol 
13:string)(children: TimestampCol
 LessTimestampScalar(col 3:timestamp, val 2006-01-01 00:00:00) -> 6:boolean, 
IfExprStringScalarStringGroupColumn(col 7:boolean, val Late 2000scol 
11:string)(children: TimestampColumnBetween(col 3:timestamp, left 2005-12-31 
16:00:00.0, right 2010-12-31 15:59:59.999999999) -> 7:boolean, 
IfExprNullNull(null, null) -> 11:string) -> 13:string) -> 11:string) -> 
13:string, IfExprLongColumnLongColumn(col 5:boolean, col 6:int, col 
7:int)(children: TimestampColLessTimestampScalar(col 1:timestamp, val 
1974-10-04 17:21:03.989) -> 5:boolean, VectorUDFYearTimestamp(col 1:timestamp, 
field YEAR) -> 6:int, VectorUDFYearTimestamp(col 3:timestamp, field YEAR) -> 
7:int) -> 14:int, VectorUDFAdaptor(CASE WHEN ((stimestamp1 like '%19%')) THEN 
(stimestamp1) ELSE (TIMESTAMP'2018-03-08 23:04:59') END)(children: 
SelectStringColLikeStringScalar(col 2:string) -> 5:boolean) -> 11:string, 
IfExprNullColumn(col 5:boolean, null, col 6)(children: 
TimestampColEqualTimestampScalar(col 1:timestamp, val 2021-09-24 03:18:3
 2.413655165) -> 5:boolean, VectorUDFMinuteTimestamp(col 1:timestamp, field 
MINUTE) -> 6:int) -> 7:int, IfExprColumnNull(col 17:boolean, col 15:int, 
null)(children: ColAndCol(col 15:boolean, col 16:boolean)(children: 
TimestampColGreaterEqualTimestampScalar(col 3:timestamp, val 5344-10-04 
18:40:08.165) -> 15:boolean, TimestampColLessTimestampScalar(col 3:timestamp, 
val 6631-11-13 16:31:29.702202248) -> 16:boolean) -> 17:boolean, 
VectorUDFMinuteTimestamp(col 1:timestamp, field MINUTE) -> 15:int) -> 16:int, 
IfExprLongColumnLongColumn(col 20:boolean, col 21:date, col 22:date)(children: 
DoubleColGreaterDoubleScalar(col 19:double, val 100.0)(children: 
DoubleColModuloDoubleScalar(col 18:double, val 500.0)(children: 
CastTimestampToDouble(col 1:timestamp) -> 18:double) -> 19:double) -> 
20:boolean, VectorUDFDateAddColScalar(col 0:date, val 1) -> 21:date, 
VectorUDFDateAddColScalar(col 0:date, val 365) -> 22:date) -> 23:date
                     Statistics: Num rows: 51 Data size: 16000 Basic stats: 
COMPLETE Column stats: NONE
                     Reduce Output Operator
                       key expressions: _col0 (type: timestamp), _col10 (type: 
string), _col1 (type: timestamp)
@@ -693,7 +693,7 @@ STAGE PLANS:
                         className: VectorSelectOperator
                         native: true
                         projectedOutputColumnNums: [1, 3, 15, 26, 36, 40, 42, 
44, 46, 53, 2]
-                        selectExpressions: IfExprColumnCondExpr(col 5:boolean, 
col 6:stringcol 14:string)(children: TimestampColLessEqualTimestampScalar(col 
3:timestamp, val 1800-12-31 00:00:00) -> 5:boolean, 
ConstantVectorExpression(val 1800s or Earlier) -> 6:string, 
IfExprColumnCondExpr(col 7:boolean, col 8:stringcol 13:string)(children: 
TimestampColLessTimestampScalar(col 3:timestamp, val 1900-01-01 00:00:00) -> 
7:boolean, ConstantVectorExpression(val 1900s) -> 8:string, 
IfExprColumnCondExpr(col 9:boolean, col 10:stringcol 12:string)(children: 
VectorUDFAdaptor(ctimestamp2 BETWEEN TIMESTAMP'2006-01-01 00:00:00' AND 
TIMESTAMP'2010-12-31 23:59:59.999999999') -> 9:boolean, 
ConstantVectorExpression(val Late 2000s) -> 10:string, 
IfExprStringScalarStringScalar(col 11:boolean, val Early 2010s, val 
Unknown)(children: TimestampColLessEqualTimestampScalar(col 3:timestamp, val 
2015-12-31 23:59:59.999999999) -> 11:boolean) -> 12:string) -> 13:string) -> 
14:string) -> 15:string, IfExprColumnCo
 ndExpr(col 11:boolean, col 16:stringcol 25:string)(children: 
TimestampColLessEqualTimestampScalar(col 3:timestamp, val 2000-12-31 
23:59:59.999999999) -> 11:boolean, ConstantVectorExpression(val Old) -> 
16:string, IfExprColumnCondExpr(col 17:boolean, col 18:stringcol 
24:string)(children: TimestampColLessTimestampScalar(col 3:timestamp, val 
2006-01-01 00:00:00) -> 17:boolean, ConstantVectorExpression(val Early 2000s) 
-> 18:string, IfExprColumnCondExpr(col 19:boolean, col 20:stringcol 
23:string)(children: VectorUDFAdaptor(ctimestamp2 BETWEEN TIMESTAMP'2006-01-01 
00:00:00' AND TIMESTAMP'2010-12-31 23:59:59.999999999') -> 19:boolean, 
ConstantVectorExpression(val Late 2000s) -> 20:string, IfExprColumnNull(col 
21:boolean, col 22:string, null)(children: 
TimestampColLessEqualTimestampScalar(col 3:timestamp, val 2015-12-31 
23:59:59.999999999) -> 21:boolean, ConstantVectorExpression(val Early 2010s) -> 
22:string) -> 23:string) -> 24:string) -> 25:string) -> 26:string, 
IfExprColumnCondExpr(col 
 27:boolean, col 28:stringcol 35:string)(children: 
TimestampColLessEqualTimestampScalar(col 3:timestamp, val 2000-12-31 
23:59:59.999999999) -> 27:boolean, ConstantVectorExpression(val Old) -> 
28:string, IfExprColumnCondExpr(col 29:boolean, col 30:stringcol 
34:string)(children: TimestampColLessTimestampScalar(col 3:timestamp, val 
2006-01-01 00:00:00) -> 29:boolean, ConstantVectorExpression(val Early 2000s) 
-> 30:string, IfExprColumnCondExpr(col 31:boolean, col 32:stringcol 
33:string)(children: VectorUDFAdaptor(ctimestamp2 BETWEEN TIMESTAMP'2006-01-01 
00:00:00' AND TIMESTAMP'2010-12-31 23:59:59.999999999') -> 31:boolean, 
ConstantVectorExpression(val Late 2000s) -> 32:string, IfExprNullNull(null, 
null) -> 33:string) -> 34:string) -> 35:string) -> 36:string, 
IfExprCondExprCondExpr(col 37:boolean, col 38:intcol 39:int)(children: 
TimestampColLessTimestampScalar(col 1:timestamp, val 1974-10-04 17:21:03.989) 
-> 37:boolean, VectorUDFYearTimestamp(col 1:timestamp, field YEAR) -> 38:int, 
Vector
 UDFYearTimestamp(col 3:timestamp, field YEAR) -> 39:int) -> 40:int, 
VectorUDFAdaptor(CASE WHEN ((stimestamp1 like '%19%')) THEN (stimestamp1) ELSE 
(TIMESTAMP'2018-03-08 23:04:59') END)(children: 
SelectStringColLikeStringScalar(col 2:string) -> 41:boolean) -> 42:string, 
IfExprNullCondExpr(col 41:boolean, null, col 43:int)(children: 
TimestampColEqualTimestampScalar(col 1:timestamp, val 2021-09-24 
03:18:32.413655165) -> 41:boolean, VectorUDFMinuteTimestamp(col 1:timestamp, 
field MINUTE) -> 43:int) -> 44:int, IfExprCondExprNull(col 47:boolean, col 
45:int, null)(children: ColAndCol(col 45:boolean, col 46:boolean)(children: 
TimestampColGreaterEqualTimestampScalar(col 3:timestamp, val 5344-10-04 
18:40:08.165) -> 45:boolean, TimestampColLessTimestampScalar(col 3:timestamp, 
val 6631-11-13 16:31:29.702202248) -> 46:boolean) -> 47:boolean, 
VectorUDFMinuteTimestamp(col 1:timestamp, field MINUTE) -> 45:int) -> 46:int, 
IfExprCondExprCondExpr(col 50:boolean, col 51:datecol 52:date)(children: Doubl
 eColGreaterDoubleScalar(col 49:double, val 100.0)(children: 
DoubleColModuloDoubleScalar(col 48:double, val 500.0)(children: 
CastTimestampToDouble(col 1:timestamp) -> 48:double) -> 49:double) -> 
50:boolean, VectorUDFDateAddColScalar(col 0:date, val 1) -> 51:date, 
VectorUDFDateAddColScalar(col 0:date, val 365) -> 52:date) -> 53:date
+                        selectExpressions: IfExprColumnCondExpr(col 5:boolean, 
col 6:stringcol 14:string)(children: TimestampColLessEqualTimestampScalar(col 
3:timestamp, val 1800-12-31 00:00:00) -> 5:boolean, 
ConstantVectorExpression(val 1800s or Earlier) -> 6:string, 
IfExprColumnCondExpr(col 7:boolean, col 8:stringcol 13:string)(children: 
TimestampColLessTimestampScalar(col 3:timestamp, val 1900-01-01 00:00:00) -> 
7:boolean, ConstantVectorExpression(val 1900s) -> 8:string, 
IfExprColumnCondExpr(col 9:boolean, col 10:stringcol 12:string)(children: 
TimestampColumnBetween(col 3:timestamp, left 2005-12-31 16:00:00.0, right 
2010-12-31 15:59:59.999999999) -> 9:boolean, ConstantVectorExpression(val Late 
2000s) -> 10:string, IfExprStringScalarStringScalar(col 11:boolean, val Early 
2010s, val Unknown)(children: TimestampColLessEqualTimestampScalar(col 
3:timestamp, val 2015-12-31 23:59:59.999999999) -> 11:boolean) -> 12:string) -> 
13:string) -> 14:string) -> 15:string, IfExprColumnCondExpr(co
 l 11:boolean, col 16:stringcol 25:string)(children: 
TimestampColLessEqualTimestampScalar(col 3:timestamp, val 2000-12-31 
23:59:59.999999999) -> 11:boolean, ConstantVectorExpression(val Old) -> 
16:string, IfExprColumnCondExpr(col 17:boolean, col 18:stringcol 
24:string)(children: TimestampColLessTimestampScalar(col 3:timestamp, val 
2006-01-01 00:00:00) -> 17:boolean, ConstantVectorExpression(val Early 2000s) 
-> 18:string, IfExprColumnCondExpr(col 19:boolean, col 20:stringcol 
23:string)(children: TimestampColumnBetween(col 3:timestamp, left 2005-12-31 
16:00:00.0, right 2010-12-31 15:59:59.999999999) -> 19:boolean, 
ConstantVectorExpression(val Late 2000s) -> 20:string, IfExprColumnNull(col 
21:boolean, col 22:string, null)(children: 
TimestampColLessEqualTimestampScalar(col 3:timestamp, val 2015-12-31 
23:59:59.999999999) -> 21:boolean, ConstantVectorExpression(val Early 2010s) -> 
22:string) -> 23:string) -> 24:string) -> 25:string) -> 26:string, 
IfExprColumnCondExpr(col 27:boolean, col 28
 :stringcol 35:string)(children: TimestampColLessEqualTimestampScalar(col 
3:timestamp, val 2000-12-31 23:59:59.999999999) -> 27:boolean, 
ConstantVectorExpression(val Old) -> 28:string, IfExprColumnCondExpr(col 
29:boolean, col 30:stringcol 34:string)(children: 
TimestampColLessTimestampScalar(col 3:timestamp, val 2006-01-01 00:00:00) -> 
29:boolean, ConstantVectorExpression(val Early 2000s) -> 30:string, 
IfExprColumnCondExpr(col 31:boolean, col 32:stringcol 33:string)(children: 
TimestampColumnBetween(col 3:timestamp, left 2005-12-31 16:00:00.0, right 
2010-12-31 15:59:59.999999999) -> 31:boolean, ConstantVectorExpression(val Late 
2000s) -> 32:string, IfExprNullNull(null, null) -> 33:string) -> 34:string) -> 
35:string) -> 36:string, IfExprCondExprCondExpr(col 37:boolean, col 38:intcol 
39:int)(children: TimestampColLessTimestampScalar(col 1:timestamp, val 
1974-10-04 17:21:03.989) -> 37:boolean, VectorUDFYearTimestamp(col 1:timestamp, 
field YEAR) -> 38:int, VectorUDFYearTimestamp(col 3:time
 stamp, field YEAR) -> 39:int) -> 40:int, VectorUDFAdaptor(CASE WHEN 
((stimestamp1 like '%19%')) THEN (stimestamp1) ELSE (TIMESTAMP'2018-03-08 
23:04:59') END)(children: SelectStringColLikeStringScalar(col 2:string) -> 
41:boolean) -> 42:string, IfExprNullCondExpr(col 41:boolean, null, col 
43:int)(children: TimestampColEqualTimestampScalar(col 1:timestamp, val 
2021-09-24 03:18:32.413655165) -> 41:boolean, VectorUDFMinuteTimestamp(col 
1:timestamp, field MINUTE) -> 43:int) -> 44:int, IfExprCondExprNull(col 
47:boolean, col 45:int, null)(children: ColAndCol(col 45:boolean, col 
46:boolean)(children: TimestampColGreaterEqualTimestampScalar(col 3:timestamp, 
val 5344-10-04 18:40:08.165) -> 45:boolean, TimestampColLessTimestampScalar(col 
3:timestamp, val 6631-11-13 16:31:29.702202248) -> 46:boolean) -> 47:boolean, 
VectorUDFMinuteTimestamp(col 1:timestamp, field MINUTE) -> 45:int) -> 46:int, 
IfExprCondExprCondExpr(col 50:boolean, col 51:datecol 52:date)(children: 
DoubleColGreaterDoubleScalar(col
  49:double, val 100.0)(children: DoubleColModuloDoubleScalar(col 48:double, 
val 500.0)(children: CastTimestampToDouble(col 1:timestamp) -> 48:double) -> 
49:double) -> 50:boolean, VectorUDFDateAddColScalar(col 0:date, val 1) -> 
51:date, VectorUDFDateAddColScalar(col 0:date, val 365) -> 52:date) -> 53:date
                     Statistics: Num rows: 51 Data size: 16000 Basic stats: 
COMPLETE Column stats: NONE
                     Reduce Output Operator
                       key expressions: _col0 (type: timestamp), _col10 (type: 
string), _col1 (type: timestamp)

http://git-wip-us.apache.org/repos/asf/hive/blob/edc53cc0/ql/src/test/results/clientpositive/llap/vector_udf_inline.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/vector_udf_inline.q.out 
b/ql/src/test/results/clientpositive/llap/vector_udf_inline.q.out
index 67e8c91..be5f3f0 100644
--- a/ql/src/test/results/clientpositive/llap/vector_udf_inline.q.out
+++ b/ql/src/test/results/clientpositive/llap/vector_udf_inline.q.out
@@ -66,7 +66,7 @@ STAGE PLANS:
                 enabled: true
                 enabledConditionsMet: 
hive.vectorized.use.vector.serde.deserialize IS true
                 inputFileFormats: org.apache.hadoop.mapred.TextInputFormat
-                notVectorizedReason: SELECT operator: Unable to vectorize 
custom UDF. Complex type constants not supported: Const 
struct<col1:int,col2:string> [1, dude!]
+                notVectorizedReason: UDTF Operator (UDTF) not supported
                 vectorized: false
 
   Stage: Stage-0

http://git-wip-us.apache.org/repos/asf/hive/blob/edc53cc0/ql/src/test/results/clientpositive/llap/vectorization_10.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/vectorization_10.q.out 
b/ql/src/test/results/clientpositive/llap/vectorization_10.q.out
index 7b004d8..be7c85a 100644
--- a/ql/src/test/results/clientpositive/llap/vectorization_10.q.out
+++ b/ql/src/test/results/clientpositive/llap/vectorization_10.q.out
@@ -82,7 +82,7 @@ STAGE PLANS:
                           className: VectorSelectOperator
                           native: true
                           projectedOutputColumnNums: [5, 8, 0, 10, 6, 13, 17, 
16, 18, 20, 21, 19, 23, 24, 26]
-                          selectExpressions: DoubleColUnaryMinus(col 5:double) 
-> 13:double, DoubleColAddDoubleColumn(col 5:double, col 16:double)(children: 
CastLongToDouble(col 1:smallint) -> 16:double) -> 17:double, 
DoubleColModuloDoubleScalar(col 18:double, val 33.0)(children: 
DoubleColAddDoubleColumn(col 5:double, col 16:double)(children: 
CastLongToDouble(col 1:smallint) -> 16:double) -> 18:double) -> 16:double, 
DoubleColUnaryMinus(col 5:double) -> 18:double, DoubleColModuloDoubleColumn(col 
19:double, col 5:double)(children: CastLongToDouble(col 0:tinyint) -> 
19:double) -> 20:double, LongColModuloLongColumn(col 0:smallint, col 
1:smallint)(children: col 0:tinyint) -> 21:smallint, DoubleColUnaryMinus(col 
5:double) -> 19:double, LongColMultiplyLongColumn(col 3:bigint, col 
22:bigint)(children: col 22:smallint) -> 23:bigint, 
DoubleScalarSubtractDoubleColumn(val 9763215.5639, col 25:double)(children: 
DoubleColAddDoubleColumn(col 5:double, col 24:double)(children: 
CastLongToDouble(col 
 1:smallint) -> 24:double) -> 25:double) -> 24:double, DoubleColUnaryMinus(col 
25:double)(children: DoubleColUnaryMinus(col 5:double) -> 25:double) -> 
26:double
+                          selectExpressions: DoubleColUnaryMinus(col 5:double) 
-> 13:double, DoubleColAddDoubleColumn(col 5:double, col 16:double)(children: 
CastLongToDouble(col 1:smallint) -> 16:double) -> 17:double, 
DoubleColModuloDoubleScalar(col 18:double, val 33.0)(children: 
DoubleColAddDoubleColumn(col 5:double, col 16:double)(children: 
CastLongToDouble(col 1:smallint) -> 16:double) -> 18:double) -> 16:double, 
DoubleColUnaryMinus(col 5:double) -> 18:double, DoubleColModuloDoubleColumn(col 
19:double, col 5:double)(children: CastLongToDouble(col 0:tinyint) -> 
19:double) -> 20:double, LongColModuloLongColumn(col 0:smallint, col 
1:smallint)(children: col 0:tinyint) -> 21:smallint, DoubleColUnaryMinus(col 
5:double) -> 19:double, LongColMultiplyLongColumn(col 3:bigint, col 
22:bigint)(children: LongColModuloLongColumn(col 0:smallint, col 
1:smallint)(children: col 0:tinyint) -> 22:smallint) -> 23:bigint, 
DoubleScalarSubtractDoubleColumn(val 9763215.5639, col 25:double)(children: 
Doubl
 eColAddDoubleColumn(col 5:double, col 24:double)(children: 
CastLongToDouble(col 1:smallint) -> 24:double) -> 25:double) -> 24:double, 
DoubleColUnaryMinus(col 25:double)(children: DoubleColUnaryMinus(col 5:double) 
-> 25:double) -> 26:double
                       Statistics: Num rows: 9557 Data size: 1893568 Basic 
stats: COMPLETE Column stats: COMPLETE
                       File Output Operator
                         compressed: false

http://git-wip-us.apache.org/repos/asf/hive/blob/edc53cc0/ql/src/test/results/clientpositive/llap/vectorization_7.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/vectorization_7.q.out 
b/ql/src/test/results/clientpositive/llap/vectorization_7.q.out
index 050729f..008068e 100644
--- a/ql/src/test/results/clientpositive/llap/vectorization_7.q.out
+++ b/ql/src/test/results/clientpositive/llap/vectorization_7.q.out
@@ -91,7 +91,7 @@ STAGE PLANS:
                           className: VectorSelectOperator
                           native: true
                           projectedOutputColumnNums: [10, 3, 1, 0, 8, 6, 14, 
15, 16, 17, 19, 20, 18, 21, 23]
-                          selectExpressions: LongColAddLongColumn(col 
3:bigint, col 3:bigint) -> 14:bigint, LongColModuloLongScalar(col 1:int, val 
-257)(children: col 1:smallint) -> 15:int, LongColUnaryMinus(col 1:smallint) -> 
16:smallint, LongColUnaryMinus(col 0:tinyint) -> 17:tinyint, 
LongColAddLongScalar(col 18:int, val 17)(children: col 18:tinyint) -> 19:int, 
LongColMultiplyLongColumn(col 3:bigint, col 18:bigint)(children: col 
18:smallint) -> 20:bigint, LongColModuloLongColumn(col 2:int, col 
1:int)(children: col 1:smallint) -> 18:int, LongColUnaryMinus(col 0:tinyint) -> 
21:tinyint, LongColModuloLongColumn(col 22:tinyint, col 0:tinyint)(children: 
LongColUnaryMinus(col 0:tinyint) -> 22:tinyint) -> 23:tinyint
+                          selectExpressions: LongColAddLongColumn(col 
3:bigint, col 3:bigint) -> 14:bigint, LongColModuloLongScalar(col 1:int, val 
-257)(children: col 1:smallint) -> 15:int, LongColUnaryMinus(col 1:smallint) -> 
16:smallint, LongColUnaryMinus(col 0:tinyint) -> 17:tinyint, 
LongColAddLongScalar(col 18:int, val 17)(children: LongColUnaryMinus(col 
0:tinyint) -> 18:tinyint) -> 19:int, LongColMultiplyLongColumn(col 3:bigint, 
col 18:bigint)(children: LongColUnaryMinus(col 1:smallint) -> 18:smallint) -> 
20:bigint, LongColModuloLongColumn(col 2:int, col 1:int)(children: col 
1:smallint) -> 18:int, LongColUnaryMinus(col 0:tinyint) -> 21:tinyint, 
LongColModuloLongColumn(col 22:tinyint, col 0:tinyint)(children: 
LongColUnaryMinus(col 0:tinyint) -> 22:tinyint) -> 23:tinyint
                       Statistics: Num rows: 5461 Data size: 923616 Basic 
stats: COMPLETE Column stats: COMPLETE
                       Reduce Output Operator
                         key expressions: _col0 (type: boolean), _col1 (type: 
bigint), _col2 (type: smallint), _col3 (type: tinyint), _col4 (type: 
timestamp), _col5 (type: string), _col6 (type: bigint), _col7 (type: int), 
_col8 (type: smallint), _col9 (type: tinyint), _col10 (type: int), _col11 
(type: bigint), _col12 (type: int), _col13 (type: tinyint), _col14 (type: 
tinyint)
@@ -341,7 +341,7 @@ STAGE PLANS:
                           className: VectorSelectOperator
                           native: true
                           projectedOutputColumnNums: [10, 3, 1, 0, 8, 6, 14, 
15, 16, 17, 19, 20, 18, 21, 23]
-                          selectExpressions: LongColAddLongColumn(col 
3:bigint, col 3:bigint) -> 14:bigint, LongColModuloLongScalar(col 1:int, val 
-257)(children: col 1:smallint) -> 15:int, LongColUnaryMinus(col 1:smallint) -> 
16:smallint, LongColUnaryMinus(col 0:tinyint) -> 17:tinyint, 
LongColAddLongScalar(col 18:int, val 17)(children: col 18:tinyint) -> 19:int, 
LongColMultiplyLongColumn(col 3:bigint, col 18:bigint)(children: col 
18:smallint) -> 20:bigint, LongColModuloLongColumn(col 2:int, col 
1:int)(children: col 1:smallint) -> 18:int, LongColUnaryMinus(col 0:tinyint) -> 
21:tinyint, LongColModuloLongColumn(col 22:tinyint, col 0:tinyint)(children: 
LongColUnaryMinus(col 0:tinyint) -> 22:tinyint) -> 23:tinyint
+                          selectExpressions: LongColAddLongColumn(col 
3:bigint, col 3:bigint) -> 14:bigint, LongColModuloLongScalar(col 1:int, val 
-257)(children: col 1:smallint) -> 15:int, LongColUnaryMinus(col 1:smallint) -> 
16:smallint, LongColUnaryMinus(col 0:tinyint) -> 17:tinyint, 
LongColAddLongScalar(col 18:int, val 17)(children: LongColUnaryMinus(col 
0:tinyint) -> 18:tinyint) -> 19:int, LongColMultiplyLongColumn(col 3:bigint, 
col 18:bigint)(children: LongColUnaryMinus(col 1:smallint) -> 18:smallint) -> 
20:bigint, LongColModuloLongColumn(col 2:int, col 1:int)(children: col 
1:smallint) -> 18:int, LongColUnaryMinus(col 0:tinyint) -> 21:tinyint, 
LongColModuloLongColumn(col 22:tinyint, col 0:tinyint)(children: 
LongColUnaryMinus(col 0:tinyint) -> 22:tinyint) -> 23:tinyint
                       Statistics: Num rows: 5461 Data size: 923616 Basic 
stats: COMPLETE Column stats: COMPLETE
                       Reduce Output Operator
                         key expressions: _col0 (type: boolean), _col1 (type: 
bigint), _col2 (type: smallint), _col3 (type: tinyint), _col4 (type: 
timestamp), _col5 (type: string), _col6 (type: bigint), _col7 (type: int), 
_col8 (type: smallint), _col9 (type: tinyint), _col10 (type: int), _col11 
(type: bigint), _col12 (type: int), _col13 (type: tinyint), _col14 (type: 
tinyint)

http://git-wip-us.apache.org/repos/asf/hive/blob/edc53cc0/ql/src/test/results/clientpositive/llap/vectorization_8.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/vectorization_8.q.out 
b/ql/src/test/results/clientpositive/llap/vectorization_8.q.out
index 3eeccf8..de95bbb 100644
--- a/ql/src/test/results/clientpositive/llap/vectorization_8.q.out
+++ b/ql/src/test/results/clientpositive/llap/vectorization_8.q.out
@@ -87,7 +87,7 @@ STAGE PLANS:
                           className: VectorSelectOperator
                           native: true
                           projectedOutputColumnNums: [8, 5, 10, 6, 4, 13, 14, 
15, 17, 19, 16, 18, 20, 22]
-                          selectExpressions: DoubleColUnaryMinus(col 5:double) 
-> 13:double, DoubleScalarSubtractDoubleColumn(val -5638.15, col 5:double) -> 
14:double, DoubleColMultiplyDoubleScalar(col 5:double, val -257.0) -> 
15:double, DoubleColAddDoubleColumn(col 16:float, col 4:float)(children: 
CastLongToFloatViaLongToDouble(col 2:int) -> 16:float) -> 17:float, 
DoubleColAddDoubleColumn(col 16:double, col 18:double)(children: 
DoubleColUnaryMinus(col 5:double) -> 16:double, CastLongToDouble(col 3:bigint) 
-> 18:double) -> 19:double, DoubleColUnaryMinus(col 5:double) -> 16:double, 
DoubleScalarSubtractDoubleColumn(val -1.3890000581741333, col 4:float) -> 
18:float, DoubleColUnaryMinus(col 4:float) -> 20:float, 
DoubleColAddDoubleColumn(col 21:double, col 23:double)(children: 
DoubleScalarSubtractDoubleColumn(val -5638.15, col 5:double) -> 21:double, col 
23:float) -> 22:double
+                          selectExpressions: DoubleColUnaryMinus(col 5:double) 
-> 13:double, DoubleScalarSubtractDoubleColumn(val -5638.15, col 5:double) -> 
14:double, DoubleColMultiplyDoubleScalar(col 5:double, val -257.0) -> 
15:double, DoubleColAddDoubleColumn(col 16:float, col 4:float)(children: 
CastLongToFloatViaLongToDouble(col 2:int) -> 16:float) -> 17:float, 
DoubleColAddDoubleColumn(col 16:double, col 18:double)(children: 
DoubleColUnaryMinus(col 5:double) -> 16:double, CastLongToDouble(col 3:bigint) 
-> 18:double) -> 19:double, DoubleColUnaryMinus(col 5:double) -> 16:double, 
DoubleScalarSubtractDoubleColumn(val -1.3890000581741333, col 4:float) -> 
18:float, DoubleColUnaryMinus(col 4:float) -> 20:float, 
DoubleColAddDoubleColumn(col 21:double, col 23:double)(children: 
DoubleScalarSubtractDoubleColumn(val -5638.15, col 5:double) -> 21:double, 
DoubleColAddDoubleColumn(col 22:float, col 4:float)(children: 
CastLongToFloatViaLongToDouble(col 2:int) -> 22:float) -> 23:float) -> 22:dou
 ble
                       Statistics: Num rows: 3059 Data size: 557250 Basic 
stats: COMPLETE Column stats: COMPLETE
                       Reduce Output Operator
                         key expressions: _col0 (type: timestamp), _col1 (type: 
double), _col2 (type: boolean), _col3 (type: string), _col4 (type: float), 
_col5 (type: double), _col6 (type: double), _col7 (type: double), _col8 (type: 
float), _col9 (type: double), _col10 (type: double), _col11 (type: float), 
_col12 (type: float), _col13 (type: double)
@@ -324,7 +324,7 @@ STAGE PLANS:
                           className: VectorSelectOperator
                           native: true
                           projectedOutputColumnNums: [8, 5, 10, 6, 4, 13, 14, 
15, 17, 19, 16, 18, 20, 22]
-                          selectExpressions: DoubleColUnaryMinus(col 5:double) 
-> 13:double, DoubleScalarSubtractDoubleColumn(val -5638.15, col 5:double) -> 
14:double, DoubleColMultiplyDoubleScalar(col 5:double, val -257.0) -> 
15:double, DoubleColAddDoubleColumn(col 16:float, col 4:float)(children: 
CastLongToFloatViaLongToDouble(col 2:int) -> 16:float) -> 17:float, 
DoubleColAddDoubleColumn(col 16:double, col 18:double)(children: 
DoubleColUnaryMinus(col 5:double) -> 16:double, CastLongToDouble(col 3:bigint) 
-> 18:double) -> 19:double, DoubleColUnaryMinus(col 5:double) -> 16:double, 
DoubleScalarSubtractDoubleColumn(val -1.3890000581741333, col 4:float) -> 
18:float, DoubleColUnaryMinus(col 4:float) -> 20:float, 
DoubleColAddDoubleColumn(col 21:double, col 23:double)(children: 
DoubleScalarSubtractDoubleColumn(val -5638.15, col 5:double) -> 21:double, col 
23:float) -> 22:double
+                          selectExpressions: DoubleColUnaryMinus(col 5:double) 
-> 13:double, DoubleScalarSubtractDoubleColumn(val -5638.15, col 5:double) -> 
14:double, DoubleColMultiplyDoubleScalar(col 5:double, val -257.0) -> 
15:double, DoubleColAddDoubleColumn(col 16:float, col 4:float)(children: 
CastLongToFloatViaLongToDouble(col 2:int) -> 16:float) -> 17:float, 
DoubleColAddDoubleColumn(col 16:double, col 18:double)(children: 
DoubleColUnaryMinus(col 5:double) -> 16:double, CastLongToDouble(col 3:bigint) 
-> 18:double) -> 19:double, DoubleColUnaryMinus(col 5:double) -> 16:double, 
DoubleScalarSubtractDoubleColumn(val -1.3890000581741333, col 4:float) -> 
18:float, DoubleColUnaryMinus(col 4:float) -> 20:float, 
DoubleColAddDoubleColumn(col 21:double, col 23:double)(children: 
DoubleScalarSubtractDoubleColumn(val -5638.15, col 5:double) -> 21:double, 
DoubleColAddDoubleColumn(col 22:float, col 4:float)(children: 
CastLongToFloatViaLongToDouble(col 2:int) -> 22:float) -> 23:float) -> 22:dou
 ble
                       Statistics: Num rows: 3059 Data size: 557250 Basic 
stats: COMPLETE Column stats: COMPLETE
                       Reduce Output Operator
                         key expressions: _col0 (type: timestamp), _col1 (type: 
double), _col2 (type: boolean), _col3 (type: string), _col4 (type: float), 
_col5 (type: double), _col6 (type: double), _col7 (type: double), _col8 (type: 
float), _col9 (type: double), _col10 (type: double), _col11 (type: float), 
_col12 (type: float), _col13 (type: double)

http://git-wip-us.apache.org/repos/asf/hive/blob/edc53cc0/ql/src/test/results/clientpositive/llap/vectorization_short_regress.q.out
----------------------------------------------------------------------
diff --git 
a/ql/src/test/results/clientpositive/llap/vectorization_short_regress.q.out 
b/ql/src/test/results/clientpositive/llap/vectorization_short_regress.q.out
index 2fc659d..3830f41 100644
--- a/ql/src/test/results/clientpositive/llap/vectorization_short_regress.q.out
+++ b/ql/src/test/results/clientpositive/llap/vectorization_short_regress.q.out
@@ -1649,7 +1649,7 @@ STAGE PLANS:
                           className: VectorSelectOperator
                           native: true
                           projectedOutputColumnNums: [2, 6, 11, 9, 5, 4, 3, 1, 
10, 15, 16, 17, 14, 19, 20, 21, 23, 26, 28, 25, 18, 29]
-                          selectExpressions: LongColAddLongColumn(col 2:int, 
col 1:int)(children: col 1:smallint) -> 15:int, LongColSubtractLongColumn(col 
3:bigint, col 0:bigint)(children: col 0:tinyint) -> 16:bigint, 
LongColUnaryMinus(col 3:bigint) -> 17:bigint, DoubleColUnaryMinus(col 4:float) 
-> 14:float, LongColAddLongColumn(col 18:bigint, col 3:bigint)(children: 
LongColSubtractLongColumn(col 3:bigint, col 0:bigint)(children: col 0:tinyint) 
-> 18:bigint) -> 19:bigint, DoubleColDivideDoubleColumn(col 5:double, col 
5:double) -> 20:double, DoubleColUnaryMinus(col 5:double) -> 21:double, 
LongColMultiplyLongColumn(col 18:bigint, col 22:bigint)(children: col 18:int, 
LongColUnaryMinus(col 3:bigint) -> 22:bigint) -> 23:bigint, 
DoubleColAddDoubleColumn(col 24:double, col 25:double)(children: 
DoubleColUnaryMinus(col 5:double) -> 24:double, CastLongToDouble(col 3:bigint) 
-> 25:double) -> 26:double, DecimalScalarDivideDecimalColumn(val -1.389, col 
27:decimal(3,0))(children: CastLongToDecima
 l(col 0:tinyint) -> 27:decimal(3,0)) -> 28:decimal(8,7), 
DoubleColModuloDoubleColumn(col 24:double, col 5:double)(children: 
CastLongToDouble(col 3:bigint) -> 24:double) -> 25:double, 
LongColUnaryMinus(col 1:smallint) -> 18:smallint, LongColAddLongColumn(col 
1:int, col 22:int)(children: col 1:smallint, LongColAddLongColumn(col 2:int, 
col 1:int)(children: col 1:smallint) -> 22:int) -> 29:int
+                          selectExpressions: LongColAddLongColumn(col 2:int, 
col 1:int)(children: col 1:smallint) -> 15:int, LongColSubtractLongColumn(col 
3:bigint, col 0:bigint)(children: col 0:tinyint) -> 16:bigint, 
LongColUnaryMinus(col 3:bigint) -> 17:bigint, DoubleColUnaryMinus(col 4:float) 
-> 14:float, LongColAddLongColumn(col 18:bigint, col 3:bigint)(children: 
LongColSubtractLongColumn(col 3:bigint, col 0:bigint)(children: col 0:tinyint) 
-> 18:bigint) -> 19:bigint, DoubleColDivideDoubleColumn(col 5:double, col 
5:double) -> 20:double, DoubleColUnaryMinus(col 5:double) -> 21:double, 
LongColMultiplyLongColumn(col 18:bigint, col 22:bigint)(children: 
LongColAddLongColumn(col 2:int, col 1:int)(children: col 1:smallint) -> 18:int, 
LongColUnaryMinus(col 3:bigint) -> 22:bigint) -> 23:bigint, 
DoubleColAddDoubleColumn(col 24:double, col 25:double)(children: 
DoubleColUnaryMinus(col 5:double) -> 24:double, CastLongToDouble(col 3:bigint) 
-> 25:double) -> 26:double, DecimalScalarDivideDecim
 alColumn(val -1.389, col 27:decimal(3,0))(children: CastLongToDecimal(col 
0:tinyint) -> 27:decimal(3,0)) -> 28:decimal(8,7), 
DoubleColModuloDoubleColumn(col 24:double, col 5:double)(children: 
CastLongToDouble(col 3:bigint) -> 24:double) -> 25:double, 
LongColUnaryMinus(col 1:smallint) -> 18:smallint, LongColAddLongColumn(col 
1:int, col 22:int)(children: col 1:smallint, LongColAddLongColumn(col 2:int, 
col 1:int)(children: col 1:smallint) -> 22:int) -> 29:int
                       Statistics: Num rows: 10922 Data size: 3594034 Basic 
stats: COMPLETE Column stats: COMPLETE
                       Reduce Output Operator
                         key expressions: _col8 (type: boolean), _col1 (type: 
string), _col3 (type: timestamp), _col5 (type: float), _col6 (type: bigint), 
_col4 (type: double), _col0 (type: int), _col7 (type: smallint), _col9 (type: 
int), _col10 (type: bigint), _col11 (type: bigint), _col12 (type: float), 
_col13 (type: bigint), _col14 (type: double), _col15 (type: double), _col16 
(type: bigint), _col17 (type: double), _col18 (type: decimal(8,7)), _col19 
(type: double), _col20 (type: smallint), _col21 (type: int)
@@ -1954,7 +1954,7 @@ STAGE PLANS:
                           className: VectorSelectOperator
                           native: true
                           projectedOutputColumnNums: [8, 7, 5, 4, 3, 1, 16, 
17, 15, 18, 19, 21, 20, 22, 23, 25]
-                          selectExpressions: DoubleColDivideDoubleScalar(col 
15:double, val 3569.0)(children: CastLongToDouble(col 3:bigint) -> 15:double) 
-> 16:double, LongScalarSubtractLongColumn(val -257, col 1:int)(children: col 
1:smallint) -> 17:int, DoubleScalarMultiplyDoubleColumn(val -6432.0, col 
4:float) -> 15:float, DoubleColUnaryMinus(col 5:double) -> 18:double, 
DoubleColMultiplyDoubleScalar(col 5:double, val 10.175) -> 19:double, 
DoubleColDivideDoubleColumn(col 20:double, col 4:double)(children: col 
20:float, col 4:float) -> 21:double, DoubleColUnaryMinus(col 4:float) -> 
20:float, LongColModuloLongColumn(col 2:int, col 1:int)(children: col 
1:smallint) -> 22:int, DoubleColUnaryMinus(col 5:double) -> 23:double, 
DoubleColMultiplyDoubleColumn(col 5:double, col 24:double)(children: 
DoubleColUnaryMinus(col 5:double) -> 24:double) -> 25:double
+                          selectExpressions: DoubleColDivideDoubleScalar(col 
15:double, val 3569.0)(children: CastLongToDouble(col 3:bigint) -> 15:double) 
-> 16:double, LongScalarSubtractLongColumn(val -257, col 1:int)(children: col 
1:smallint) -> 17:int, DoubleScalarMultiplyDoubleColumn(val -6432.0, col 
4:float) -> 15:float, DoubleColUnaryMinus(col 5:double) -> 18:double, 
DoubleColMultiplyDoubleScalar(col 5:double, val 10.175) -> 19:double, 
DoubleColDivideDoubleColumn(col 20:double, col 4:double)(children: 
DoubleScalarMultiplyDoubleColumn(val -6432.0, col 4:float) -> 20:float, col 
4:float) -> 21:double, DoubleColUnaryMinus(col 4:float) -> 20:float, 
LongColModuloLongColumn(col 2:int, col 1:int)(children: col 1:smallint) -> 
22:int, DoubleColUnaryMinus(col 5:double) -> 23:double, 
DoubleColMultiplyDoubleColumn(col 5:double, col 24:double)(children: 
DoubleColUnaryMinus(col 5:double) -> 24:double) -> 25:double
                       Statistics: Num rows: 3868 Data size: 748844 Basic 
stats: COMPLETE Column stats: COMPLETE
                       Reduce Output Operator
                         key expressions: _col5 (type: smallint), _col1 (type: 
string), _col2 (type: double), _col3 (type: float), _col4 (type: bigint), _col6 
(type: double), _col7 (type: int), _col8 (type: float), _col9 (type: double), 
_col10 (type: double), _col11 (type: double), _col12 (type: float), _col13 
(type: int), _col14 (type: double), _col15 (type: double)

http://git-wip-us.apache.org/repos/asf/hive/blob/edc53cc0/ql/src/test/results/clientpositive/llap/vectorized_casts.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/vectorized_casts.q.out 
b/ql/src/test/results/clientpositive/llap/vectorized_casts.q.out
index b835c47..6a72515 100644
--- a/ql/src/test/results/clientpositive/llap/vectorized_casts.q.out
+++ b/ql/src/test/results/clientpositive/llap/vectorized_casts.q.out
@@ -184,7 +184,7 @@ STAGE PLANS:
                           className: VectorSelectOperator
                           native: true
                           projectedOutputColumnNums: [13, 14, 15, 16, 17, 18, 
10, 20, 19, 21, 0, 1, 2, 3, 22, 23, 10, 24, 25, 27, 28, 29, 30, 31, 32, 33, 34, 
4, 5, 35, 36, 37, 38, 39, 5, 41, 43, 45, 47, 48, 49, 51, 54, 55, 8, 56, 57, 26, 
58, 59, 60, 61, 62, 63, 64, 65, 6, 67, 68, 69, 70, 66, 73]
-                          selectExpressions: 
CastLongToBooleanViaLongToLong(col 0:tinyint) -> 13:boolean, 
CastLongToBooleanViaLongToLong(col 1:smallint) -> 14:boolean, 
CastLongToBooleanViaLongToLong(col 2:int) -> 15:boolean, 
CastLongToBooleanViaLongToLong(col 3:bigint) -> 16:boolean, 
CastDoubleToBooleanViaDoubleToLong(col 4:float) -> 17:boolean, 
CastDoubleToBooleanViaDoubleToLong(col 5:double) -> 18:boolean, 
CastLongToBooleanViaLongToLong(col 19:bigint)(children: 
LongColMultiplyLongScalar(col 3:bigint, val 0) -> 19:bigint) -> 20:boolean, 
CastTimestampToBoolean(col 8:timestamp) -> 19:boolean, CastStringToBoolean(col 
6) -> 21:boolean, CastDoubleToLong(col 4:float) -> 22:int, CastDoubleToLong(col 
5:double) -> 23:int, CastTimestampToLong(col 8:timestamp) -> 24:int, 
CastStringToLong(col 6:string) -> 25:int, CastStringToLong(col 
26:string)(children: StringSubstrColStartLen(col 6:string, start 0, length 1) 
-> 26:string) -> 27:int, CastDoubleToLong(col 4:float) -> 28:tinyint, 
CastDoubleToLo
 ng(col 4:float) -> 29:smallint, CastDoubleToLong(col 4:float) -> 30:bigint, 
CastLongToDouble(col 0:tinyint) -> 31:double, CastLongToDouble(col 1:smallint) 
-> 32:double, CastLongToDouble(col 2:int) -> 33:double, CastLongToDouble(col 
3:bigint) -> 34:double, CastLongToDouble(col 10:boolean) -> 35:double, 
CastTimestampToDouble(col 8:timestamp) -> 36:double, CastStringToDouble(col 
6:string) -> 37:double, CastStringToDouble(col 26:string)(children: 
StringSubstrColStartLen(col 6:string, start 0, length 1) -> 26:string) -> 
38:double, CastLongToFloatViaLongToDouble(col 2:int) -> 39:float, 
CastMillisecondsLongToTimestamp(col 0:tinyint) -> 41:timestamp, 
CastMillisecondsLongToTimestamp(col 1:smallint) -> 43:timestamp, 
CastMillisecondsLongToTimestamp(col 2:int) -> 45:timestamp, 
CastMillisecondsLongToTimestamp(col 3:bigint) -> 47:timestamp, 
CastDoubleToTimestamp(col 4:float) -> 48:timestamp, CastDoubleToTimestamp(col 
5:double) -> 49:timestamp, CastMillisecondsLongToTimestamp(col 10:boolean) -> 51
 :timestamp, CastMillisecondsLongToTimestamp(col 52:bigint)(children: 
LongColMultiplyLongScalar(col 3:bigint, val 0) -> 52:bigint) -> 54:timestamp, 
CastDateToTimestamp(col 52:date)(children: CastTimestampToDate(col 8:timestamp) 
-> 52:date) -> 55:timestamp, CastStringToTimestamp(col 6:string) -> 
56:timestamp, CastStringToTimestamp(col 26:string)(children: 
StringSubstrColStartLen(col 6:string, start 0, length 1) -> 26:string) -> 
57:timestamp, CastLongToString(col 0:tinyint) -> 26:string, 
CastLongToString(col 1:smallint) -> 58:string, CastLongToString(col 2:int) -> 
59:string, CastLongToString(col 3:bigint) -> 60:string, CastFloatToString(col 
4:float) -> 61:string, CastDoubleToString(col 5:double) -> 62:string, 
CastBooleanToStringViaLongToString(col 10:boolean) -> 63:string, 
CastLongToString(col 52:bigint)(children: LongColMultiplyLongScalar(col 
3:bigint, val 0) -> 52:bigint) -> 64:string, CastTimestampToString(col 
8:timestamp) -> 65:string, CastStringGroupToString(col 66:char(10))(child
 ren: CastStringGroupToChar(col 6:string, maxLength 10) -> 66:char(10)) -> 
67:string, CastStringGroupToString(col 66:varchar(10))(children: 
CastStringGroupToVarChar(col 6:string, maxLength 10) -> 66:varchar(10)) -> 
68:string, CastLongToFloatViaLongToDouble(col 52:int)(children: 
CastDoubleToLong(col 4:float) -> 52:int) -> 69:float, CastLongToDouble(col 
52:int)(children: LongColMultiplyLongScalar(col 2:int, val 2) -> 52:int) -> 
70:double, CastDoubleToString(col 71:double)(children: 
FuncSinDoubleToDouble(col 4:float) -> 71:double) -> 66:string, 
DoubleColAddDoubleColumn(col 71:double, col 72:double)(children: col 71:float, 
CastLongToDouble(col 10:boolean) -> 72:double) -> 73:double
+                          selectExpressions: 
CastLongToBooleanViaLongToLong(col 0:tinyint) -> 13:boolean, 
CastLongToBooleanViaLongToLong(col 1:smallint) -> 14:boolean, 
CastLongToBooleanViaLongToLong(col 2:int) -> 15:boolean, 
CastLongToBooleanViaLongToLong(col 3:bigint) -> 16:boolean, 
CastDoubleToBooleanViaDoubleToLong(col 4:float) -> 17:boolean, 
CastDoubleToBooleanViaDoubleToLong(col 5:double) -> 18:boolean, 
CastLongToBooleanViaLongToLong(col 19:bigint)(children: 
LongColMultiplyLongScalar(col 3:bigint, val 0) -> 19:bigint) -> 20:boolean, 
CastTimestampToBoolean(col 8:timestamp) -> 19:boolean, CastStringToBoolean(col 
6) -> 21:boolean, CastDoubleToLong(col 4:float) -> 22:int, CastDoubleToLong(col 
5:double) -> 23:int, CastTimestampToLong(col 8:timestamp) -> 24:int, 
CastStringToLong(col 6:string) -> 25:int, CastStringToLong(col 
26:string)(children: StringSubstrColStartLen(col 6:string, start 0, length 1) 
-> 26:string) -> 27:int, CastDoubleToLong(col 4:float) -> 28:tinyint, 
CastDoubleToLo
 ng(col 4:float) -> 29:smallint, CastDoubleToLong(col 4:float) -> 30:bigint, 
CastLongToDouble(col 0:tinyint) -> 31:double, CastLongToDouble(col 1:smallint) 
-> 32:double, CastLongToDouble(col 2:int) -> 33:double, CastLongToDouble(col 
3:bigint) -> 34:double, CastLongToDouble(col 10:boolean) -> 35:double, 
CastTimestampToDouble(col 8:timestamp) -> 36:double, CastStringToDouble(col 
6:string) -> 37:double, CastStringToDouble(col 26:string)(children: 
StringSubstrColStartLen(col 6:string, start 0, length 1) -> 26:string) -> 
38:double, CastLongToFloatViaLongToDouble(col 2:int) -> 39:float, 
CastMillisecondsLongToTimestamp(col 0:tinyint) -> 41:timestamp, 
CastMillisecondsLongToTimestamp(col 1:smallint) -> 43:timestamp, 
CastMillisecondsLongToTimestamp(col 2:int) -> 45:timestamp, 
CastMillisecondsLongToTimestamp(col 3:bigint) -> 47:timestamp, 
CastDoubleToTimestamp(col 4:float) -> 48:timestamp, CastDoubleToTimestamp(col 
5:double) -> 49:timestamp, CastMillisecondsLongToTimestamp(col 10:boolean) -> 51
 :timestamp, CastMillisecondsLongToTimestamp(col 52:bigint)(children: 
LongColMultiplyLongScalar(col 3:bigint, val 0) -> 52:bigint) -> 54:timestamp, 
CastDateToTimestamp(col 52:date)(children: CastTimestampToDate(col 8:timestamp) 
-> 52:date) -> 55:timestamp, CastStringToTimestamp(col 6:string) -> 
56:timestamp, CastStringToTimestamp(col 26:string)(children: 
StringSubstrColStartLen(col 6:string, start 0, length 1) -> 26:string) -> 
57:timestamp, CastLongToString(col 0:tinyint) -> 26:string, 
CastLongToString(col 1:smallint) -> 58:string, CastLongToString(col 2:int) -> 
59:string, CastLongToString(col 3:bigint) -> 60:string, CastFloatToString(col 
4:float) -> 61:string, CastDoubleToString(col 5:double) -> 62:string, 
CastBooleanToStringViaLongToString(col 10:boolean) -> 63:string, 
CastLongToString(col 52:bigint)(children: LongColMultiplyLongScalar(col 
3:bigint, val 0) -> 52:bigint) -> 64:string, CastTimestampToString(col 
8:timestamp) -> 65:string, CastStringGroupToString(col 66:char(10))(child
 ren: CastStringGroupToChar(col 6:string, maxLength 10) -> 66:char(10)) -> 
67:string, CastStringGroupToString(col 66:varchar(10))(children: 
CastStringGroupToVarChar(col 6:string, maxLength 10) -> 66:varchar(10)) -> 
68:string, CastLongToFloatViaLongToDouble(col 52:int)(children: 
CastDoubleToLong(col 4:float) -> 52:int) -> 69:float, CastLongToDouble(col 
52:int)(children: LongColMultiplyLongScalar(col 2:int, val 2) -> 52:int) -> 
70:double, CastDoubleToString(col 71:double)(children: 
FuncSinDoubleToDouble(col 4:float) -> 71:double) -> 66:string, 
DoubleColAddDoubleColumn(col 71:double, col 72:double)(children: 
CastLongToFloatViaLongToDouble(col 2:int) -> 71:float, CastLongToDouble(col 
10:boolean) -> 72:double) -> 73:double
                       Statistics: Num rows: 6144 Data size: 16362860 Basic 
stats: COMPLETE Column stats: COMPLETE
                       File Output Operator
                         compressed: false

Reply via email to