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 2017/10/29 20:40:17 UTC

[38/51] [partial] hive git commit: HIVE-17433: Vectorization: Support Decimal64 in Hive Query Engine (Matt McCline, reviewed by Teddy Choi)

http://git-wip-us.apache.org/repos/asf/hive/blob/e63ebccc/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateAddScalarCol.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateAddScalarCol.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateAddScalarCol.java
index f0a676d..d5bc603 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateAddScalarCol.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateAddScalarCol.java
@@ -21,7 +21,10 @@ package org.apache.hadoop.hive.ql.exec.vector.expressions;
 import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector;
 import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor;
 import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch;
+import org.apache.hadoop.hive.ql.metadata.HiveException;
 import org.apache.hadoop.hive.serde2.io.DateWritable;
+import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector.PrimitiveCategory;
+import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo;
 import org.apache.hive.common.util.DateParser;
 
 import java.nio.charset.StandardCharsets;
@@ -32,23 +35,30 @@ import java.sql.Timestamp;
 public class VectorUDFDateAddScalarCol extends VectorExpression {
   private static final long serialVersionUID = 1L;
 
-  private int colNum;
-  private int outputColumn;
+  private final int colNum;
+
   private long longValue = 0;
   private Timestamp timestampValue = null;
   private byte[] stringValue = null;
+
   protected boolean isPositive = true;
+
   private transient final DateParser dateParser = new DateParser();
   private transient final Date baseDate = new Date(0);
 
+  // Transient members initialized by transientInit method.
+  private transient PrimitiveCategory primitiveCategory;
+
   public VectorUDFDateAddScalarCol() {
     super();
+
+    // Dummy final assignments.
+    colNum = -1;
   }
 
-  public VectorUDFDateAddScalarCol(Object object, int colNum, int outputColumn) {
-    this();
+  public VectorUDFDateAddScalarCol(Object object, int colNum, int outputColumnNum) {
+    super(outputColumnNum);
     this.colNum = colNum;
-    this.outputColumn = outputColumn;
 
     if (object instanceof Long) {
       this.longValue = (Long) object;
@@ -62,6 +72,14 @@ public class VectorUDFDateAddScalarCol extends VectorExpression {
   }
 
   @Override
+  public void transientInit() throws HiveException {
+    super.transientInit();
+
+    primitiveCategory =
+        ((PrimitiveTypeInfo) inputTypeInfos[0]).getPrimitiveCategory();
+  }
+
+  @Override
   public void evaluate(VectorizedRowBatch batch) {
 
     if (childExpressions != null) {
@@ -73,9 +91,9 @@ public class VectorUDFDateAddScalarCol extends VectorExpression {
     final int n = inputCol.isRepeating ? 1 : batch.size;
     int[] sel = batch.selected;
     final boolean selectedInUse = (inputCol.isRepeating == false) && batch.selectedInUse;
-    LongColumnVector outV = (LongColumnVector) batch.cols[outputColumn];
+    LongColumnVector outV = (LongColumnVector) batch.cols[outputColumnNum];
 
-    switch (inputTypes[0]) {
+    switch (primitiveCategory) {
       case DATE:
         baseDate.setTime(DateWritable.daysToMillis((int) longValue));
         break;
@@ -104,7 +122,7 @@ public class VectorUDFDateAddScalarCol extends VectorExpression {
         }
         break;
       default:
-        throw new Error("Unsupported input type " + inputTypes[0].name());
+        throw new Error("Unsupported input type " + primitiveCategory.name());
     }
 
     if(batch.size == 0) {
@@ -161,28 +179,6 @@ public class VectorUDFDateAddScalarCol extends VectorExpression {
     output.vector[i] = result;
   }
 
-  @Override
-  public int getOutputColumn() {
-    return this.outputColumn;
-  }
-
-  @Override
-  public String getOutputType() {
-    return "date";
-  }
-
-  public int getColNum() {
-    return colNum;
-  }
-
-  public void setColNum(int colNum) {
-    this.colNum = colNum;
-  }
-
-  public void setOutputColumn(int outputColumn) {
-    this.outputColumn = outputColumn;
-  }
-
   public long getLongValue() {
     return longValue;
   }
@@ -209,7 +205,7 @@ public class VectorUDFDateAddScalarCol extends VectorExpression {
 
   @Override
   public String vectorExpressionParameters() {
-    return "val " + stringValue + ", col " + colNum;
+    return "val " + stringValue + ", " + getColumnParamString(0, colNum);
   }
 
   public VectorExpressionDescriptor.Descriptor getDescriptor() {

http://git-wip-us.apache.org/repos/asf/hive/blob/e63ebccc/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateDiffColCol.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateDiffColCol.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateDiffColCol.java
index d3c5da2..95eb151 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateDiffColCol.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateDiffColCol.java
@@ -25,7 +25,11 @@ import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector;
 import org.apache.hadoop.hive.ql.exec.vector.TimestampColumnVector;
 import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor;
 import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch;
+import org.apache.hadoop.hive.ql.metadata.HiveException;
 import org.apache.hadoop.hive.serde2.io.DateWritable;
+import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector.PrimitiveCategory;
+import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo;
+import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
 
 import java.sql.Date;
 import java.text.ParseException;
@@ -34,23 +38,36 @@ import java.text.SimpleDateFormat;
 public class VectorUDFDateDiffColCol extends VectorExpression {
   private static final long serialVersionUID = 1L;
 
-  private int colNum1;
-  private int colNum2;
-  private int outputColumn;
-  private transient SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
-  private transient Date date = new Date(0);
-  private transient LongColumnVector dateVector1 = new LongColumnVector();
-  private transient LongColumnVector dateVector2 = new LongColumnVector();
+  private final int colNum1;
+  private final int colNum2;
 
-  public VectorUDFDateDiffColCol(int colNum1, int colNum2, int outputColumn) {
-    this();
+  private transient final SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
+  private transient final Date date = new Date(0);
+
+  // Transient members initialized by transientInit method.
+  private transient LongColumnVector dateVector1;
+  private transient LongColumnVector dateVector2;
+
+  public VectorUDFDateDiffColCol(int colNum1, int colNum2, int outputColumnNum) {
+    super(outputColumnNum);
     this.colNum1 = colNum1;
     this.colNum2 = colNum2;
-    this.outputColumn = outputColumn;
   }
 
   public VectorUDFDateDiffColCol() {
     super();
+
+    // Dummy final assignments.
+    colNum1 = -1;
+    colNum2 = -1;
+  }
+
+  @Override
+  public void transientInit() throws HiveException {
+    super.transientInit();
+
+    dateVector1 = new LongColumnVector();
+    dateVector2 = new LongColumnVector();
   }
 
   @Override
@@ -65,7 +82,7 @@ public class VectorUDFDateDiffColCol extends VectorExpression {
     int[] sel = batch.selected;
     int n = batch.size;
 
-    LongColumnVector outV = (LongColumnVector) batch.cols[outputColumn];
+    LongColumnVector outV = (LongColumnVector) batch.cols[outputColumnNum];
     long[] outputVector = outV.vector;
     if (n <= 0) {
       // Nothing to do
@@ -74,8 +91,8 @@ public class VectorUDFDateDiffColCol extends VectorExpression {
 
     NullUtil.propagateNullsColCol(inputColVector1, inputColVector2, outV, batch.selected, batch.size, batch.selectedInUse);
 
-    LongColumnVector convertedVector1 = toDateArray(batch, inputTypes[0], inputColVector1, dateVector1);
-    LongColumnVector convertedVector2 = toDateArray(batch, inputTypes[1], inputColVector2, dateVector2);
+    LongColumnVector convertedVector1 = toDateArray(batch, inputTypeInfos[0], inputColVector1, dateVector1);
+    LongColumnVector convertedVector2 = toDateArray(batch, inputTypeInfos[1], inputColVector2, dateVector2);
 
     // Now disregard null in second pass.
     if ((inputColVector1.isRepeating) && (inputColVector2.isRepeating)) {
@@ -147,10 +164,12 @@ public class VectorUDFDateDiffColCol extends VectorExpression {
     }
   }
 
-  private LongColumnVector toDateArray(VectorizedRowBatch batch, Type colType,
+  private LongColumnVector toDateArray(VectorizedRowBatch batch, TypeInfo typeInfo,
                                        ColumnVector inputColVector, LongColumnVector dateVector) {
+    PrimitiveCategory primitiveCategory =
+        ((PrimitiveTypeInfo) typeInfo).getPrimitiveCategory();
     int size = batch.size;
-    if (colType == Type.DATE) {
+    if (primitiveCategory == PrimitiveCategory.DATE) {
       return (LongColumnVector) inputColVector;
     }
 
@@ -164,7 +183,7 @@ public class VectorUDFDateDiffColCol extends VectorExpression {
       }
     }
 
-    switch (colType) {
+    switch (primitiveCategory) {
       case TIMESTAMP:
         TimestampColumnVector tcv = (TimestampColumnVector) inputColVector;
         copySelected(tcv, batch.selectedInUse, batch.selected, batch.size, dateVector);
@@ -177,7 +196,7 @@ public class VectorUDFDateDiffColCol extends VectorExpression {
         copySelected(bcv, batch.selectedInUse, batch.selected, batch.size, dateVector);
         return dateVector;
       default:
-        throw new Error("Unsupported input type " + colType.name());
+        throw new Error("Unsupported input type " + primitiveCategory.name());
     }
   }
 
@@ -328,38 +347,8 @@ public class VectorUDFDateDiffColCol extends VectorExpression {
   }
 
   @Override
-  public int getOutputColumn() {
-    return this.outputColumn;
-  }
-
-  @Override
-  public String getOutputType() {
-    return "long";
-  }
-
-  public int getColNum1() {
-    return colNum1;
-  }
-
-  public void setColNum1(int colNum1) {
-    this.colNum1 = colNum1;
-  }
-
-  public int getColNum2() {
-    return colNum2;
-  }
-
-  public void setColNum2(int colNum2) {
-    this.colNum2 = colNum2;
-  }
-
-  public void setOutputColumn(int outputColumn) {
-    this.outputColumn = outputColumn;
-  }
-
-  @Override
   public String vectorExpressionParameters() {
-    return "col " + colNum1 + ", col " + colNum2;
+    return getColumnParamString(0, colNum1) + ", " + getColumnParamString(1, colNum2);
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/hive/blob/e63ebccc/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateDiffColScalar.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateDiffColScalar.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateDiffColScalar.java
index 1253f2f..44027a2 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateDiffColScalar.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateDiffColScalar.java
@@ -26,6 +26,8 @@ import org.apache.hadoop.hive.ql.exec.vector.TimestampColumnVector;
 import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor;
 import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch;
 import org.apache.hadoop.hive.serde2.io.DateWritable;
+import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector.PrimitiveCategory;
+import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo;
 import org.apache.hadoop.io.Text;
 
 import java.nio.charset.StandardCharsets;
@@ -37,20 +39,21 @@ import java.text.SimpleDateFormat;
 public class VectorUDFDateDiffColScalar extends VectorExpression {
   private static final long serialVersionUID = 1L;
 
-  private int colNum;
-  private int outputColumn;
+  private final int colNum;
+
   private long longValue;
   private Timestamp timestampValue;
   private byte[] bytesValue;
-  private transient SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
+
+  private transient final SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
   private transient final Text text = new Text();
+  private transient final Date date = new Date(0);
+
   private int baseDate;
-  private transient Date date = new Date(0);
 
-  public VectorUDFDateDiffColScalar(int colNum, Object object, int outputColumn) {
-    super();
+  public VectorUDFDateDiffColScalar(int colNum, Object object, int outputColumnNum) {
+    super(outputColumnNum);
     this.colNum = colNum;
-    this.outputColumn = outputColumn;
 
     if (object instanceof Long) {
       this.longValue = (Long) object;
@@ -65,6 +68,9 @@ public class VectorUDFDateDiffColScalar extends VectorExpression {
 
   public VectorUDFDateDiffColScalar() {
     super();
+
+    // Dummy final assignments.
+    colNum = -1;
   }
 
   @Override
@@ -74,7 +80,7 @@ public class VectorUDFDateDiffColScalar extends VectorExpression {
       super.evaluateChildren(batch);
     }
 
-    LongColumnVector outV = (LongColumnVector) batch.cols[outputColumn];
+    LongColumnVector outV = (LongColumnVector) batch.cols[outputColumnNum];
     ColumnVector inputCol = batch.cols[this.colNum];
     /* every line below this is identical for evaluateLong & evaluateString */
     final int n = inputCol.isRepeating ? 1 : batch.size;
@@ -89,7 +95,8 @@ public class VectorUDFDateDiffColScalar extends VectorExpression {
     /* true for all algebraic UDFs with no state */
     outV.isRepeating = inputCol.isRepeating;
 
-    switch (inputTypes[1]) {
+    PrimitiveCategory primitiveCategory1 = ((PrimitiveTypeInfo) inputTypeInfos[1]).getPrimitiveCategory();
+    switch (primitiveCategory1) {
       case DATE:
         baseDate = (int) longValue;
         break;
@@ -121,10 +128,11 @@ public class VectorUDFDateDiffColScalar extends VectorExpression {
           return;
         }
     default:
-        throw new Error("Invalid input type #1: " + inputTypes[1].name());
+        throw new Error("Invalid input type #1: " + primitiveCategory1.name());
     }
 
-    switch (inputTypes[0]) {
+    PrimitiveCategory primitiveCategory0 = ((PrimitiveTypeInfo) inputTypeInfos[0]).getPrimitiveCategory();
+    switch (primitiveCategory0) {
       case DATE:
         if (inputCol.noNulls) {
           outV.noNulls = true;
@@ -235,7 +243,7 @@ public class VectorUDFDateDiffColScalar extends VectorExpression {
         }
         break;
     default:
-      throw new Error("Invalid input type #0: " + inputTypes[0].name());
+      throw new Error("Invalid input type #0: " + primitiveCategory0.name());
     }
   }
 
@@ -261,27 +269,6 @@ public class VectorUDFDateDiffColScalar extends VectorExpression {
       output.isNull[i] = true;
     }
   }
-  @Override
-  public int getOutputColumn() {
-    return this.outputColumn;
-  }
-
-  @Override
-  public String getOutputType() {
-    return "long";
-  }
-
-  public int getColNum() {
-    return colNum;
-  }
-
-  public void setColNum(int colNum) {
-    this.colNum = colNum;
-  }
-
-  public void setOutputColumn(int outputColumn) {
-    this.outputColumn = outputColumn;
-  }
 
   public long getLongValue() {
     return longValue;
@@ -301,7 +288,7 @@ public class VectorUDFDateDiffColScalar extends VectorExpression {
 
   @Override
   public String vectorExpressionParameters() {
-    return "col " + colNum + ", val " + displayUtf8Bytes(bytesValue);
+    return getColumnParamString(0, colNum) + ", val " + displayUtf8Bytes(bytesValue);
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/hive/blob/e63ebccc/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateDiffScalarCol.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateDiffScalarCol.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateDiffScalarCol.java
index d5ee1eb..d280e4c 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateDiffScalarCol.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateDiffScalarCol.java
@@ -25,6 +25,8 @@ import org.apache.hadoop.hive.ql.exec.vector.TimestampColumnVector;
 import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor;
 import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch;
 import org.apache.hadoop.hive.serde2.io.DateWritable;
+import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector.PrimitiveCategory;
+import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo;
 import org.apache.hadoop.io.Text;
 
 import java.sql.Date;
@@ -35,20 +37,21 @@ import java.text.SimpleDateFormat;
 public class VectorUDFDateDiffScalarCol extends VectorExpression {
   private static final long serialVersionUID = 1L;
 
-  private int colNum;
-  private int outputColumn;
+  private final int colNum;
+
   private long longValue;
   private Timestamp timestampValue = null;
   private byte[] stringValue;
-  private transient SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
+
+  private transient final SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
   private transient final Text text = new Text();
+  private transient final Date date = new Date(0);
+
   private int baseDate;
-  private transient Date date = new Date(0);
 
-  public VectorUDFDateDiffScalarCol(Object object, int colNum, int outputColumn) {
-    super();
+  public VectorUDFDateDiffScalarCol(Object object, int colNum, int outputColumnNum) {
+    super(outputColumnNum);
     this.colNum = colNum;
-    this.outputColumn = outputColumn;
 
     if (object instanceof Long) {
       this.longValue = (Long) object;
@@ -63,6 +66,9 @@ public class VectorUDFDateDiffScalarCol extends VectorExpression {
 
   public VectorUDFDateDiffScalarCol() {
     super();
+
+    // Dummy final assignments.
+    colNum = -1;
   }
 
   @Override
@@ -72,7 +78,7 @@ public class VectorUDFDateDiffScalarCol extends VectorExpression {
       super.evaluateChildren(batch);
     }
 
-    LongColumnVector outV = (LongColumnVector) batch.cols[outputColumn];
+    LongColumnVector outV = (LongColumnVector) batch.cols[outputColumnNum];
     ColumnVector inputCol = batch.cols[this.colNum];
     /* every line below this is identical for evaluateLong & evaluateString */
     final int n = inputCol.isRepeating ? 1 : batch.size;
@@ -87,7 +93,9 @@ public class VectorUDFDateDiffScalarCol extends VectorExpression {
     /* true for all algebraic UDFs with no state */
     outV.isRepeating = inputCol.isRepeating;
 
-    switch (inputTypes[0]) {
+    PrimitiveCategory primitiveCategory0 =
+        ((PrimitiveTypeInfo) inputTypeInfos[0]).getPrimitiveCategory();
+    switch (primitiveCategory0) {
       case DATE:
         baseDate = (int) longValue;
         break;
@@ -119,10 +127,12 @@ public class VectorUDFDateDiffScalarCol extends VectorExpression {
           return;
         }
       default:
-        throw new Error("Unsupported input type " + inputTypes[0].name());
+        throw new Error("Unsupported input type " + primitiveCategory0.name());
     }
 
-    switch (inputTypes[1]) {
+    PrimitiveCategory primitiveCategory1 =
+        ((PrimitiveTypeInfo) inputTypeInfos[1]).getPrimitiveCategory();
+    switch (primitiveCategory1) {
       case DATE:
         if (inputCol.noNulls) {
           outV.noNulls = true;
@@ -233,7 +243,7 @@ public class VectorUDFDateDiffScalarCol extends VectorExpression {
         }
         break;
       default:
-        throw new Error("Unsupported input type " + inputTypes[1].name());
+        throw new Error("Unsupported input type " + primitiveCategory1.name());
     }
   }
 
@@ -259,47 +269,10 @@ public class VectorUDFDateDiffScalarCol extends VectorExpression {
       output.isNull[i] = true;
     }
   }
-  @Override
-  public int getOutputColumn() {
-    return this.outputColumn;
-  }
-
-  @Override
-  public String getOutputType() {
-    return "long";
-  }
-
-  public int getColNum() {
-    return colNum;
-  }
-
-  public void setColNum(int colNum) {
-    this.colNum = colNum;
-  }
-
-  public void setOutputColumn(int outputColumn) {
-    this.outputColumn = outputColumn;
-  }
-
-  public long getLongValue() {
-    return longValue;
-  }
-
-  public void setLongValue(int longValue) {
-    this.longValue = longValue;
-  }
-
-  public byte[] getStringValue() {
-    return stringValue;
-  }
-
-  public void setStringValue(byte[] stringValue) {
-    this.stringValue = stringValue;
-  }
 
   @Override
   public String vectorExpressionParameters() {
-    return "val " + stringValue + ", col " + colNum;
+    return "val " + stringValue + ", " + getColumnParamString(1, colNum);
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/hive/blob/e63ebccc/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateLong.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateLong.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateLong.java
index 3fd2e9c..5379a25 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateLong.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateLong.java
@@ -37,7 +37,7 @@ public class VectorUDFDateLong extends CastLongToDate {
     super();
   }
 
-  public VectorUDFDateLong(int inputColumn, int outputColumn) {
-    super(inputColumn, outputColumn);
+  public VectorUDFDateLong(int inputColumn, int outputColumnNum) {
+    super(inputColumn, outputColumnNum);
   }
 }

http://git-wip-us.apache.org/repos/asf/hive/blob/e63ebccc/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateString.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateString.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateString.java
index 7ae03d5..a74e295 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateString.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateString.java
@@ -40,7 +40,7 @@ public class VectorUDFDateString extends CastStringToDate {
 
   }
 
-  public VectorUDFDateString(int inputColumn, int outputColumn) {
-    super(inputColumn, outputColumn);
+  public VectorUDFDateString(int inputColumn, int outputColumnNum) {
+    super(inputColumn, outputColumnNum);
   }
 }

http://git-wip-us.apache.org/repos/asf/hive/blob/e63ebccc/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateSubColCol.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateSubColCol.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateSubColCol.java
index 994d416..b0cd8ba 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateSubColCol.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateSubColCol.java
@@ -22,13 +22,12 @@ package org.apache.hadoop.hive.ql.exec.vector.expressions;
  * Returns the date that is num_days before start_date.
  */
 public class VectorUDFDateSubColCol extends VectorUDFDateAddColCol {
-  public VectorUDFDateSubColCol(int colNum1, int colNum2, int outputColumn) {
-    super(colNum1, colNum2, outputColumn);
+  public VectorUDFDateSubColCol(int colNum1, int colNum2, int outputColumnNum) {
+    super(colNum1, colNum2, outputColumnNum);
     isPositive = false;
   }
 
   public VectorUDFDateSubColCol() {
     super();
-    isPositive = false;
   }
 }

http://git-wip-us.apache.org/repos/asf/hive/blob/e63ebccc/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateSubColScalar.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateSubColScalar.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateSubColScalar.java
index e952f5f..a5237a0 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateSubColScalar.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateSubColScalar.java
@@ -22,13 +22,12 @@ package org.apache.hadoop.hive.ql.exec.vector.expressions;
  * Returns the date that is num_days before start_date.
  */
 public class VectorUDFDateSubColScalar extends VectorUDFDateAddColScalar {
-  public VectorUDFDateSubColScalar(int colNum, long numDays, int outputColumn) {
-    super(colNum, numDays, outputColumn);
+  public VectorUDFDateSubColScalar(int colNum, long numDays, int outputColumnNum) {
+    super(colNum, numDays, outputColumnNum);
     isPositive = false;
   }
 
   public VectorUDFDateSubColScalar() {
     super();
-    isPositive = false;
   }
 }

http://git-wip-us.apache.org/repos/asf/hive/blob/e63ebccc/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateSubScalarCol.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateSubScalarCol.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateSubScalarCol.java
index eccbb21..d8183e7 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateSubScalarCol.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateSubScalarCol.java
@@ -19,13 +19,12 @@
 package org.apache.hadoop.hive.ql.exec.vector.expressions;
 
 public class VectorUDFDateSubScalarCol extends VectorUDFDateAddScalarCol {
-  public VectorUDFDateSubScalarCol(Object object, int colNum, int outputColumn) {
-    super(object, colNum, outputColumn);
+  public VectorUDFDateSubScalarCol(Object object, int colNum, int outputColumnNum) {
+    super(object, colNum, outputColumnNum);
     isPositive = false;
   }
 
   public VectorUDFDateSubScalarCol() {
     super();
-    isPositive = false;
   }
 }

http://git-wip-us.apache.org/repos/asf/hive/blob/e63ebccc/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateTimestamp.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateTimestamp.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateTimestamp.java
index f0158dc..12f5115 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateTimestamp.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateTimestamp.java
@@ -38,7 +38,7 @@ public class VectorUDFDateTimestamp extends CastTimestampToDate {
     super();
   }
 
-  public VectorUDFDateTimestamp(int inputColumn, int outputColumn) {
-    super(inputColumn, outputColumn);
+  public VectorUDFDateTimestamp(int inputColumn, int outputColumnNum) {
+    super(inputColumn, outputColumnNum);
   }
 }

http://git-wip-us.apache.org/repos/asf/hive/blob/e63ebccc/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDayOfMonthDate.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDayOfMonthDate.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDayOfMonthDate.java
index 8addb20..d4f8617 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDayOfMonthDate.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDayOfMonthDate.java
@@ -28,8 +28,8 @@ public final class VectorUDFDayOfMonthDate extends VectorUDFTimestampFieldDate {
 
   private static final long serialVersionUID = 1L;
 
-  public VectorUDFDayOfMonthDate(int colNum, int outputColumn) {
-    super(Calendar.DAY_OF_MONTH, colNum, outputColumn);
+  public VectorUDFDayOfMonthDate(int colNum, int outputColumnNum) {
+    super(Calendar.DAY_OF_MONTH, colNum, outputColumnNum);
   }
 
   public VectorUDFDayOfMonthDate() {

http://git-wip-us.apache.org/repos/asf/hive/blob/e63ebccc/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDayOfMonthString.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDayOfMonthString.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDayOfMonthString.java
index 43110c5..3af5930 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDayOfMonthString.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDayOfMonthString.java
@@ -26,8 +26,8 @@ public final class VectorUDFDayOfMonthString extends VectorUDFTimestampFieldStri
 
   private static final long serialVersionUID = 1L;
 
-  public VectorUDFDayOfMonthString(int colNum, int outputColumn) {
-    super(colNum, outputColumn, 8, 2);
+  public VectorUDFDayOfMonthString(int colNum, int outputColumnNum) {
+    super(colNum, outputColumnNum, 8, 2);
   }
 
   public VectorUDFDayOfMonthString() {

http://git-wip-us.apache.org/repos/asf/hive/blob/e63ebccc/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDayOfMonthTimestamp.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDayOfMonthTimestamp.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDayOfMonthTimestamp.java
index 4df48ee..314aec5 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDayOfMonthTimestamp.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDayOfMonthTimestamp.java
@@ -28,8 +28,8 @@ public final class VectorUDFDayOfMonthTimestamp extends VectorUDFTimestampFieldT
 
   private static final long serialVersionUID = 1L;
 
-  public VectorUDFDayOfMonthTimestamp(int colNum, int outputColumn) {
-    super(Calendar.DAY_OF_MONTH, colNum, outputColumn);
+  public VectorUDFDayOfMonthTimestamp(int colNum, int outputColumnNum) {
+    super(Calendar.DAY_OF_MONTH, colNum, outputColumnNum);
   }
 
   public VectorUDFDayOfMonthTimestamp() {

http://git-wip-us.apache.org/repos/asf/hive/blob/e63ebccc/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDayOfWeekDate.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDayOfWeekDate.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDayOfWeekDate.java
index bd9c480..1d6a9fc 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDayOfWeekDate.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDayOfWeekDate.java
@@ -28,8 +28,8 @@ public final class VectorUDFDayOfWeekDate extends VectorUDFTimestampFieldDate {
 
   private static final long serialVersionUID = 1L;
 
-  public VectorUDFDayOfWeekDate(int colNum, int outputColumn) {
-    super(Calendar.DAY_OF_WEEK, colNum, outputColumn);
+  public VectorUDFDayOfWeekDate(int colNum, int outputColumnNum) {
+    super(Calendar.DAY_OF_WEEK, colNum, outputColumnNum);
   }
 
   public VectorUDFDayOfWeekDate() {

http://git-wip-us.apache.org/repos/asf/hive/blob/e63ebccc/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDayOfWeekString.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDayOfWeekString.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDayOfWeekString.java
index 069d888..9c1d6b8 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDayOfWeekString.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDayOfWeekString.java
@@ -37,8 +37,8 @@ public final class VectorUDFDayOfWeekString extends VectorUDFTimestampFieldStrin
   private transient final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
   private transient final Calendar calendar = Calendar.getInstance();
 
-  public VectorUDFDayOfWeekString(int colNum, int outputColumn) {
-    super(colNum, outputColumn, -1, -1);
+  public VectorUDFDayOfWeekString(int colNum, int outputColumnNum) {
+    super(colNum, outputColumnNum, -1, -1);
   }
 
   public VectorUDFDayOfWeekString() {

http://git-wip-us.apache.org/repos/asf/hive/blob/e63ebccc/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDayOfWeekTimestamp.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDayOfWeekTimestamp.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDayOfWeekTimestamp.java
index 8e7c180..46e471f 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDayOfWeekTimestamp.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDayOfWeekTimestamp.java
@@ -28,8 +28,8 @@ public final class VectorUDFDayOfWeekTimestamp extends VectorUDFTimestampFieldTi
 
   private static final long serialVersionUID = 1L;
 
-  public VectorUDFDayOfWeekTimestamp(int colNum, int outputColumn) {
-    super(Calendar.DAY_OF_WEEK, colNum, outputColumn);
+  public VectorUDFDayOfWeekTimestamp(int colNum, int outputColumnNum) {
+    super(Calendar.DAY_OF_WEEK, colNum, outputColumnNum);
   }
 
   public VectorUDFDayOfWeekTimestamp() {

http://git-wip-us.apache.org/repos/asf/hive/blob/e63ebccc/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFHourDate.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFHourDate.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFHourDate.java
index 0e33e25..23b7522 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFHourDate.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFHourDate.java
@@ -28,8 +28,8 @@ public final class VectorUDFHourDate extends VectorUDFTimestampFieldDate {
 
   private static final long serialVersionUID = 1L;
 
-  public VectorUDFHourDate(int colNum, int outputColumn) {
-    super(Calendar.HOUR_OF_DAY, colNum, outputColumn);
+  public VectorUDFHourDate(int colNum, int outputColumnNum) {
+    super(Calendar.HOUR_OF_DAY, colNum, outputColumnNum);
   }
 
   public VectorUDFHourDate() {

http://git-wip-us.apache.org/repos/asf/hive/blob/e63ebccc/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFHourString.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFHourString.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFHourString.java
index 066d548..4c8a1ab 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFHourString.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFHourString.java
@@ -26,8 +26,8 @@ public final class VectorUDFHourString extends VectorUDFTimestampFieldString {
 
   private static final long serialVersionUID = 1L;
 
-  public VectorUDFHourString(int colNum, int outputColumn) {
-    super(colNum, outputColumn, 11, 2);
+  public VectorUDFHourString(int colNum, int outputColumnNum) {
+    super(colNum, outputColumnNum, 11, 2);
   }
 
   public VectorUDFHourString() {

http://git-wip-us.apache.org/repos/asf/hive/blob/e63ebccc/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFHourTimestamp.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFHourTimestamp.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFHourTimestamp.java
index 93961bc..ce14450 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFHourTimestamp.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFHourTimestamp.java
@@ -28,8 +28,8 @@ public final class VectorUDFHourTimestamp extends VectorUDFTimestampFieldTimesta
 
   private static final long serialVersionUID = 1L;
 
-  public VectorUDFHourTimestamp(int colNum, int outputColumn) {
-    super(Calendar.HOUR_OF_DAY, colNum, outputColumn);
+  public VectorUDFHourTimestamp(int colNum, int outputColumnNum) {
+    super(Calendar.HOUR_OF_DAY, colNum, outputColumnNum);
   }
 
   public VectorUDFHourTimestamp() {

http://git-wip-us.apache.org/repos/asf/hive/blob/e63ebccc/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFMinuteDate.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFMinuteDate.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFMinuteDate.java
index 98182ae..285ade0 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFMinuteDate.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFMinuteDate.java
@@ -28,8 +28,8 @@ public final class VectorUDFMinuteDate extends VectorUDFTimestampFieldDate {
 
   private static final long serialVersionUID = 1L;
 
-  public VectorUDFMinuteDate(int colNum, int outputColumn) {
-    super(Calendar.MINUTE, colNum, outputColumn);
+  public VectorUDFMinuteDate(int colNum, int outputColumnNum) {
+    super(Calendar.MINUTE, colNum, outputColumnNum);
   }
 
   public VectorUDFMinuteDate() {

http://git-wip-us.apache.org/repos/asf/hive/blob/e63ebccc/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFMinuteString.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFMinuteString.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFMinuteString.java
index 3324c3f..5b66bbb 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFMinuteString.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFMinuteString.java
@@ -26,8 +26,8 @@ public final class VectorUDFMinuteString extends VectorUDFTimestampFieldString {
 
   private static final long serialVersionUID = 1L;
 
-  public VectorUDFMinuteString(int colNum, int outputColumn) {
-    super(colNum, outputColumn, 14, 2);
+  public VectorUDFMinuteString(int colNum, int outputColumnNum) {
+    super(colNum, outputColumnNum, 14, 2);
   }
 
   public VectorUDFMinuteString() {

http://git-wip-us.apache.org/repos/asf/hive/blob/e63ebccc/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFMinuteTimestamp.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFMinuteTimestamp.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFMinuteTimestamp.java
index 7e4a262..ec8f53b 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFMinuteTimestamp.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFMinuteTimestamp.java
@@ -28,8 +28,8 @@ public final class VectorUDFMinuteTimestamp extends VectorUDFTimestampFieldTimes
 
   private static final long serialVersionUID = 1L;
 
-  public VectorUDFMinuteTimestamp(int colNum, int outputColumn) {
-    super(Calendar.MINUTE, colNum, outputColumn);
+  public VectorUDFMinuteTimestamp(int colNum, int outputColumnNum) {
+    super(Calendar.MINUTE, colNum, outputColumnNum);
   }
 
   public VectorUDFMinuteTimestamp() {

http://git-wip-us.apache.org/repos/asf/hive/blob/e63ebccc/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFMonthDate.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFMonthDate.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFMonthDate.java
index aac8ab7..f220711 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFMonthDate.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFMonthDate.java
@@ -28,8 +28,8 @@ public final class VectorUDFMonthDate extends VectorUDFTimestampFieldDate {
 
   private static final long serialVersionUID = 1L;
 
-  public VectorUDFMonthDate(int colNum, int outputColumn) {
-    super(Calendar.MONTH, colNum, outputColumn);
+  public VectorUDFMonthDate(int colNum, int outputColumnNum) {
+    super(Calendar.MONTH, colNum, outputColumnNum);
   }
 
   public VectorUDFMonthDate() {

http://git-wip-us.apache.org/repos/asf/hive/blob/e63ebccc/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFMonthString.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFMonthString.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFMonthString.java
index c2d3392..b2f29d3 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFMonthString.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFMonthString.java
@@ -26,8 +26,8 @@ public final class VectorUDFMonthString extends VectorUDFTimestampFieldString {
 
   private static final long serialVersionUID = 1L;
 
-  public VectorUDFMonthString(int colNum, int outputColumn) {
-    super(colNum, outputColumn, 5, 2);
+  public VectorUDFMonthString(int colNum, int outputColumnNum) {
+    super(colNum, outputColumnNum, 5, 2);
   }
 
   public VectorUDFMonthString() {

http://git-wip-us.apache.org/repos/asf/hive/blob/e63ebccc/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFMonthTimestamp.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFMonthTimestamp.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFMonthTimestamp.java
index e966636..0078255 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFMonthTimestamp.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFMonthTimestamp.java
@@ -30,8 +30,8 @@ public final class VectorUDFMonthTimestamp extends VectorUDFTimestampFieldTimest
 
   private static final long serialVersionUID = 1L;
 
-  public VectorUDFMonthTimestamp(int colNum, int outputColumn) {
-    super(Calendar.MONTH, colNum, outputColumn);
+  public VectorUDFMonthTimestamp(int colNum, int outputColumnNum) {
+    super(Calendar.MONTH, colNum, outputColumnNum);
   }
 
   public VectorUDFMonthTimestamp() {

http://git-wip-us.apache.org/repos/asf/hive/blob/e63ebccc/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFSecondDate.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFSecondDate.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFSecondDate.java
index fbae390..c88f86f 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFSecondDate.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFSecondDate.java
@@ -28,8 +28,8 @@ public final class VectorUDFSecondDate extends VectorUDFTimestampFieldDate {
 
   private static final long serialVersionUID = 1L;
 
-  public VectorUDFSecondDate(int colNum, int outputColumn) {
-    super(Calendar.SECOND, colNum, outputColumn);
+  public VectorUDFSecondDate(int colNum, int outputColumnNum) {
+    super(Calendar.SECOND, colNum, outputColumnNum);
   }
 
   public VectorUDFSecondDate() {

http://git-wip-us.apache.org/repos/asf/hive/blob/e63ebccc/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFSecondString.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFSecondString.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFSecondString.java
index b6617ba..b1b35c9 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFSecondString.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFSecondString.java
@@ -26,8 +26,8 @@ public final class VectorUDFSecondString extends VectorUDFTimestampFieldString {
 
   private static final long serialVersionUID = 1L;
 
-  public VectorUDFSecondString(int colNum, int outputColumn) {
-    super(colNum, outputColumn, 17, 2);
+  public VectorUDFSecondString(int colNum, int outputColumnNum) {
+    super(colNum, outputColumnNum, 17, 2);
   }
 
   public VectorUDFSecondString() {

http://git-wip-us.apache.org/repos/asf/hive/blob/e63ebccc/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFSecondTimestamp.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFSecondTimestamp.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFSecondTimestamp.java
index 97842f0..20d7c77 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFSecondTimestamp.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFSecondTimestamp.java
@@ -28,8 +28,8 @@ public final class VectorUDFSecondTimestamp extends VectorUDFTimestampFieldTimes
 
   private static final long serialVersionUID = 1L;
 
-  public VectorUDFSecondTimestamp(int colNum, int outputColumn) {
-    super(Calendar.SECOND, colNum, outputColumn);
+  public VectorUDFSecondTimestamp(int colNum, int outputColumnNum) {
+    super(Calendar.SECOND, colNum, outputColumnNum);
   }
 
   public VectorUDFSecondTimestamp() {

http://git-wip-us.apache.org/repos/asf/hive/blob/e63ebccc/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFTimestampFieldDate.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFTimestampFieldDate.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFTimestampFieldDate.java
index 0255cfa..83b8441 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFTimestampFieldDate.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFTimestampFieldDate.java
@@ -24,7 +24,10 @@ import org.apache.hadoop.hive.ql.exec.vector.ColumnVector;
 import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector;
 import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor;
 import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch;
+import org.apache.hadoop.hive.ql.metadata.HiveException;
 import org.apache.hadoop.hive.serde2.io.DateWritable;
+import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector.PrimitiveCategory;
+import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo;
 import org.apache.hive.common.util.DateUtils;
 
 import com.google.common.base.Preconditions;
@@ -34,23 +37,34 @@ import com.google.common.base.Preconditions;
  * Abstract class to return various fields from a Timestamp or Date.
  */
 public abstract class VectorUDFTimestampFieldDate extends VectorExpression {
-
   private static final long serialVersionUID = 1L;
 
-  protected int colNum;
-  protected int outputColumn;
-  protected int field;
+  protected final int colNum;
+  protected final int field;
+
   protected transient final Calendar calendar = Calendar.getInstance();
 
-  public VectorUDFTimestampFieldDate(int field, int colNum, int outputColumn) {
-    this();
+  public VectorUDFTimestampFieldDate(int field, int colNum, int outputColumnNum) {
+    super(outputColumnNum);
     this.colNum = colNum;
-    this.outputColumn = outputColumn;
     this.field = field;
   }
 
   public VectorUDFTimestampFieldDate() {
     super();
+
+    // Dummy final assignments.
+    colNum = -1;
+    field = -1;
+  }
+
+  public void initCalendar() {
+  }
+
+  @Override
+  public void transientInit() throws HiveException {
+    super.transientInit();
+    initCalendar();
   }
 
   protected long getDateField(long days) {
@@ -61,13 +75,14 @@ public abstract class VectorUDFTimestampFieldDate extends VectorExpression {
   @Override
   public void evaluate(VectorizedRowBatch batch) {
 
-    Preconditions.checkState(inputTypes[0] == VectorExpression.Type.DATE);
+    Preconditions.checkState(
+        ((PrimitiveTypeInfo) inputTypeInfos[0]).getPrimitiveCategory() == PrimitiveCategory.DATE);
 
     if (childExpressions != null) {
       super.evaluateChildren(batch);
     }
 
-    LongColumnVector outV = (LongColumnVector) batch.cols[outputColumn];
+    LongColumnVector outV = (LongColumnVector) batch.cols[outputColumnNum];
     ColumnVector inputColVec = batch.cols[this.colNum];
 
     /* every line below this is identical for evaluateLong & evaluateString */
@@ -121,36 +136,6 @@ public abstract class VectorUDFTimestampFieldDate extends VectorExpression {
   }
 
   @Override
-  public int getOutputColumn() {
-    return this.outputColumn;
-  }
-
-  @Override
-  public String getOutputType() {
-    return "long";
-  }
-
-  public int getColNum() {
-    return colNum;
-  }
-
-  public void setColNum(int colNum) {
-    this.colNum = colNum;
-  }
-
-  public int getField() {
-    return field;
-  }
-
-  public void setField(int field) {
-    this.field = field;
-  }
-
-  public void setOutputColumn(int outputColumn) {
-    this.outputColumn = outputColumn;
-  }
-
-  @Override
   public String vectorExpressionParameters() {
     if (field == -1) {
       return "col " + colNum;

http://git-wip-us.apache.org/repos/asf/hive/blob/e63ebccc/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFTimestampFieldString.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFTimestampFieldString.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFTimestampFieldString.java
index 6719ce3..9a6326d 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFTimestampFieldString.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFTimestampFieldString.java
@@ -22,8 +22,10 @@ import org.apache.hadoop.hive.ql.exec.vector.BytesColumnVector;
 import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector;
 import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor;
 import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch;
+import org.apache.hadoop.hive.ql.metadata.HiveException;
 
 import java.text.ParseException;
+import java.util.Calendar;
 
 /**
  * Abstract class to return various fields from a String.
@@ -33,15 +35,15 @@ public abstract class VectorUDFTimestampFieldString extends VectorExpression {
   private static final long serialVersionUID = 1L;
 
   protected int colNum;
-  protected int outputColumn;
   protected final int fieldStart;
   protected final int fieldLength;
   private static final String patternMin = "0000-00-00 00:00:00.000000000";
   private static final String patternMax = "9999-19-99 29:59:59.999999999";
+  protected transient final Calendar calendar = Calendar.getInstance();
 
-  public VectorUDFTimestampFieldString(int colNum, int outputColumn, int fieldStart, int fieldLength) {
+  public VectorUDFTimestampFieldString(int colNum, int outputColumnNum, int fieldStart, int fieldLength) {
+    super(outputColumnNum);
     this.colNum = colNum;
-    this.outputColumn = outputColumn;
     this.fieldStart = fieldStart;
     this.fieldLength = fieldLength;
   }
@@ -51,6 +53,15 @@ public abstract class VectorUDFTimestampFieldString extends VectorExpression {
     fieldLength = -1;
   }
 
+  public void initCalendar() {
+  }
+
+  @Override
+  public void transientInit() throws HiveException {
+    super.transientInit();
+    initCalendar();
+  }
+
   private long getField(byte[] bytes, int start, int length) throws ParseException {
     // Validate
     for (int i = 0; i < length; i++) {
@@ -82,7 +93,7 @@ public abstract class VectorUDFTimestampFieldString extends VectorExpression {
       super.evaluateChildren(batch);
     }
 
-    LongColumnVector outV = (LongColumnVector) batch.cols[outputColumn];
+    LongColumnVector outV = (LongColumnVector) batch.cols[outputColumnNum];
     BytesColumnVector inputCol = (BytesColumnVector)batch.cols[this.colNum];
 
     final int n = inputCol.isRepeating ? 1 : batch.size;
@@ -155,33 +166,11 @@ public abstract class VectorUDFTimestampFieldString extends VectorExpression {
   }
 
   @Override
-  public int getOutputColumn() {
-    return this.outputColumn;
-  }
-
-  @Override
-  public String getOutputType() {
-    return "long";
-  }
-
-  public int getColNum() {
-    return colNum;
-  }
-
-  public void setColNum(int colNum) {
-    this.colNum = colNum;
-  }
-
-  public void setOutputColumn(int outputColumn) {
-    this.outputColumn = outputColumn;
-  }
-
-  @Override
   public String vectorExpressionParameters() {
     if (fieldStart == -1) {
-      return "col " + colNum;
+      return getColumnParamString(0, colNum);
     } else {
-      return "col " + colNum + ", fieldStart " + fieldStart + ", fieldLength " + fieldLength;
+      return getColumnParamString(0, colNum) + ", fieldStart " + fieldStart + ", fieldLength " + fieldLength;
     }
   }
 

http://git-wip-us.apache.org/repos/asf/hive/blob/e63ebccc/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFTimestampFieldTimestamp.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFTimestampFieldTimestamp.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFTimestampFieldTimestamp.java
index e9000c6..c3a61d5 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFTimestampFieldTimestamp.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFTimestampFieldTimestamp.java
@@ -25,6 +25,9 @@ import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector;
 import org.apache.hadoop.hive.ql.exec.vector.TimestampColumnVector;
 import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor;
 import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch;
+import org.apache.hadoop.hive.ql.metadata.HiveException;
+import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector.PrimitiveCategory;
+import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo;
 import org.apache.hive.common.util.DateUtils;
 
 import com.google.common.base.Preconditions;
@@ -36,20 +39,32 @@ public abstract class VectorUDFTimestampFieldTimestamp extends VectorExpression
 
   private static final long serialVersionUID = 1L;
 
-  protected int colNum;
-  protected int outputColumn;
-  protected int field;
+  protected final int colNum;
+  protected final int field;
+
   protected transient final Calendar calendar = Calendar.getInstance();
 
-  public VectorUDFTimestampFieldTimestamp(int field, int colNum, int outputColumn) {
-    this();
+  public VectorUDFTimestampFieldTimestamp(int field, int colNum, int outputColumnNum) {
+    super(outputColumnNum);
     this.colNum = colNum;
-    this.outputColumn = outputColumn;
     this.field = field;
   }
 
   public VectorUDFTimestampFieldTimestamp() {
     super();
+
+    // Dummy final assignments.
+    colNum = -1;
+    field = -1;
+  }
+
+  public void initCalendar() {
+  }
+
+  @Override
+  public void transientInit() throws HiveException {
+    super.transientInit();
+    initCalendar();
   }
 
   protected long getTimestampField(TimestampColumnVector timestampColVector, int elementNum) {
@@ -60,13 +75,14 @@ public abstract class VectorUDFTimestampFieldTimestamp extends VectorExpression
   @Override
   public void evaluate(VectorizedRowBatch batch) {
 
-    Preconditions.checkState(inputTypes[0] == VectorExpression.Type.TIMESTAMP);
+    Preconditions.checkState(
+        ((PrimitiveTypeInfo) inputTypeInfos[0]).getPrimitiveCategory() == PrimitiveCategory.TIMESTAMP);
 
     if (childExpressions != null) {
         super.evaluateChildren(batch);
       }
 
-    LongColumnVector outV = (LongColumnVector) batch.cols[outputColumn];
+    LongColumnVector outV = (LongColumnVector) batch.cols[outputColumnNum];
     ColumnVector inputColVec = batch.cols[this.colNum];
 
     /* every line below this is identical for evaluateLong & evaluateString */
@@ -119,41 +135,11 @@ public abstract class VectorUDFTimestampFieldTimestamp extends VectorExpression
     }
   }
 
-  @Override
-  public int getOutputColumn() {
-    return this.outputColumn;
-  }
-
-  @Override
-  public String getOutputType() {
-    return "long";
-  }
-
-  public int getColNum() {
-    return colNum;
-  }
-
-  public void setColNum(int colNum) {
-    this.colNum = colNum;
-  }
-
-  public int getField() {
-    return field;
-  }
-
-  public void setField(int field) {
-    this.field = field;
-  }
-
-  public void setOutputColumn(int outputColumn) {
-    this.outputColumn = outputColumn;
-  }
-
   public String vectorExpressionParameters() {
     if (field == -1) {
-      return "col " + colNum;
+      return getColumnParamString(0, colNum);
     } else {
-      return "col " + colNum + ", field " + DateUtils.getFieldName(field);
+      return getColumnParamString(0, colNum) + ", field " + DateUtils.getFieldName(field);
     }
   }
 

http://git-wip-us.apache.org/repos/asf/hive/blob/e63ebccc/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFUnixTimeStampDate.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFUnixTimeStampDate.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFUnixTimeStampDate.java
index 3c693af..b348bc7 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFUnixTimeStampDate.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFUnixTimeStampDate.java
@@ -36,9 +36,9 @@ public final class VectorUDFUnixTimeStampDate extends VectorUDFTimestampFieldDat
     return dateWritable.getTimeInSeconds();
   }
 
-  public VectorUDFUnixTimeStampDate(int colNum, int outputColumn) {
+  public VectorUDFUnixTimeStampDate(int colNum, int outputColumnNum) {
     /* not a real field */
-    super(-1, colNum, outputColumn);
+    super(-1, colNum, outputColumnNum);
     dateWritable = new DateWritable();
   }
 

http://git-wip-us.apache.org/repos/asf/hive/blob/e63ebccc/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFUnixTimeStampString.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFUnixTimeStampString.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFUnixTimeStampString.java
index 16b4d0d..1c654db 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFUnixTimeStampString.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFUnixTimeStampString.java
@@ -37,8 +37,8 @@ public final class VectorUDFUnixTimeStampString extends VectorUDFTimestampFieldS
   private transient final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
   private transient final Calendar calendar = Calendar.getInstance();
 
-  public VectorUDFUnixTimeStampString(int colNum, int outputColumn) {
-    super(colNum, outputColumn, -1, -1);
+  public VectorUDFUnixTimeStampString(int colNum, int outputColumnNum) {
+    super(colNum, outputColumnNum, -1, -1);
   }
 
   public VectorUDFUnixTimeStampString() {

http://git-wip-us.apache.org/repos/asf/hive/blob/e63ebccc/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFUnixTimeStampTimestamp.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFUnixTimeStampTimestamp.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFUnixTimeStampTimestamp.java
index 2bd7756..48520fd 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFUnixTimeStampTimestamp.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFUnixTimeStampTimestamp.java
@@ -33,9 +33,9 @@ public final class VectorUDFUnixTimeStampTimestamp extends VectorUDFTimestampFie
     return timestampColVector.asScratchTimestamp(elementNum).getTime() / 1000;
   }
 
-  public VectorUDFUnixTimeStampTimestamp(int colNum, int outputColumn) {
+  public VectorUDFUnixTimeStampTimestamp(int colNum, int outputColumnNum) {
     /* not a real field */
-    super(-1, colNum, outputColumn);
+    super(-1, colNum, outputColumnNum);
   }
 
   public VectorUDFUnixTimeStampTimestamp() {

http://git-wip-us.apache.org/repos/asf/hive/blob/e63ebccc/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFWeekOfYearDate.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFWeekOfYearDate.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFWeekOfYearDate.java
index 8e8f125..8793f7d 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFWeekOfYearDate.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFWeekOfYearDate.java
@@ -28,17 +28,16 @@ public final class VectorUDFWeekOfYearDate extends VectorUDFTimestampFieldDate {
 
   private static final long serialVersionUID = 1L;
 
-  public VectorUDFWeekOfYearDate(int colNum, int outputColumn) {
-    super(Calendar.WEEK_OF_YEAR, colNum, outputColumn);
-    initCalendar();
+  public VectorUDFWeekOfYearDate(int colNum, int outputColumnNum) {
+    super(Calendar.WEEK_OF_YEAR, colNum, outputColumnNum);
   }
 
   public VectorUDFWeekOfYearDate() {
     super();
-    initCalendar();
   }
 
-  private void initCalendar() {
+  @Override
+  public void initCalendar() {
     /* code copied over from UDFWeekOfYear implementation */
     calendar.setFirstDayOfWeek(Calendar.MONDAY);
     calendar.setMinimalDaysInFirstWeek(4);

http://git-wip-us.apache.org/repos/asf/hive/blob/e63ebccc/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFWeekOfYearString.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFWeekOfYearString.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFWeekOfYearString.java
index cb1e6ca..89b89a6 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFWeekOfYearString.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFWeekOfYearString.java
@@ -35,16 +35,21 @@ public final class VectorUDFWeekOfYearString extends VectorUDFTimestampFieldStri
   private static final long serialVersionUID = 1L;
 
   private transient final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
-  private transient final Calendar calendar = Calendar.getInstance();
 
-  public VectorUDFWeekOfYearString(int colNum, int outputColumn) {
-    super(colNum, outputColumn, -1, -1);
-    initCalendar();
+  public VectorUDFWeekOfYearString(int colNum, int outputColumnNum) {
+    super(colNum, outputColumnNum, -1, -1);
   }
 
   public VectorUDFWeekOfYearString() {
     super();
-    initCalendar();
+  }
+
+  @Override
+  public void initCalendar() {
+
+    // code copied over from UDFWeekOfYear implementation
+    calendar.setFirstDayOfWeek(Calendar.MONDAY);
+    calendar.setMinimalDaysInFirstWeek(4);
   }
 
   @Override
@@ -59,11 +64,4 @@ public final class VectorUDFWeekOfYearString extends VectorUDFTimestampFieldStri
     calendar.setTime(date);
     return calendar.get(Calendar.WEEK_OF_YEAR);
   }
-
-  private void initCalendar() {
-
-    // code copied over from UDFWeekOfYear implementation
-    calendar.setFirstDayOfWeek(Calendar.MONDAY);
-    calendar.setMinimalDaysInFirstWeek(4);
-  }
 }

http://git-wip-us.apache.org/repos/asf/hive/blob/e63ebccc/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFWeekOfYearTimestamp.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFWeekOfYearTimestamp.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFWeekOfYearTimestamp.java
index 4b9c26b..636ded5 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFWeekOfYearTimestamp.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFWeekOfYearTimestamp.java
@@ -28,17 +28,16 @@ public final class VectorUDFWeekOfYearTimestamp extends VectorUDFTimestampFieldT
 
   private static final long serialVersionUID = 1L;
 
-  public VectorUDFWeekOfYearTimestamp(int colNum, int outputColumn) {
-    super(Calendar.WEEK_OF_YEAR, colNum, outputColumn);
-    initCalendar();
+  public VectorUDFWeekOfYearTimestamp(int colNum, int outputColumnNum) {
+    super(Calendar.WEEK_OF_YEAR, colNum, outputColumnNum);
   }
 
   public VectorUDFWeekOfYearTimestamp() {
     super();
-    initCalendar();
   }
 
-  private void initCalendar() {
+  @Override
+  public void initCalendar() {
     /* code copied over from UDFWeekOfYear implementation */
     calendar.setFirstDayOfWeek(Calendar.MONDAY);
     calendar.setMinimalDaysInFirstWeek(4);

http://git-wip-us.apache.org/repos/asf/hive/blob/e63ebccc/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFYearDate.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFYearDate.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFYearDate.java
index a2d098d..ac29781 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFYearDate.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFYearDate.java
@@ -28,8 +28,8 @@ public final class VectorUDFYearDate extends VectorUDFTimestampFieldDate {
 
   private static final long serialVersionUID = 1L;
 
-  public VectorUDFYearDate(int colNum, int outputColumn) {
-    super(Calendar.YEAR, colNum, outputColumn);
+  public VectorUDFYearDate(int colNum, int outputColumnNum) {
+    super(Calendar.YEAR, colNum, outputColumnNum);
   }
 
   public VectorUDFYearDate() {

http://git-wip-us.apache.org/repos/asf/hive/blob/e63ebccc/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFYearString.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFYearString.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFYearString.java
index 69acb85..ed6ce32 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFYearString.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFYearString.java
@@ -26,8 +26,8 @@ public final class VectorUDFYearString extends VectorUDFTimestampFieldString {
 
   private static final long serialVersionUID = 1L;
 
-  public VectorUDFYearString(int colNum, int outputColumn) {
-    super(colNum, outputColumn, 0, 4);
+  public VectorUDFYearString(int colNum, int outputColumnNum) {
+    super(colNum, outputColumnNum, 0, 4);
   }
 
   public VectorUDFYearString() {

http://git-wip-us.apache.org/repos/asf/hive/blob/e63ebccc/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFYearTimestamp.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFYearTimestamp.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFYearTimestamp.java
index f418bb3..d4192cc 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFYearTimestamp.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFYearTimestamp.java
@@ -28,8 +28,8 @@ public final class VectorUDFYearTimestamp extends VectorUDFTimestampFieldTimesta
 
   private static final long serialVersionUID = 1L;
 
-  public VectorUDFYearTimestamp(int colNum, int outputColumn) {
-    super(Calendar.YEAR, colNum, outputColumn);
+  public VectorUDFYearTimestamp(int colNum, int outputColumnNum) {
+    super(Calendar.YEAR, colNum, outputColumnNum);
   }
 
   public VectorUDFYearTimestamp() {

http://git-wip-us.apache.org/repos/asf/hive/blob/e63ebccc/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorAggregateExpression.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorAggregateExpression.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorAggregateExpression.java
index 702c3d5..9b045cf 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorAggregateExpression.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorAggregateExpression.java
@@ -20,13 +20,18 @@ package org.apache.hadoop.hive.ql.exec.vector.expressions.aggregates;
 
 import java.io.Serializable;
 
+import org.apache.hadoop.hive.common.type.DataTypePhysicalVariation;
+import org.apache.hadoop.hive.ql.exec.vector.ColumnVector;
 import org.apache.hadoop.hive.ql.exec.vector.VectorAggregationBufferRow;
+import org.apache.hadoop.hive.ql.exec.vector.VectorAggregationDesc;
 import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch;
 import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression;
 import org.apache.hadoop.hive.ql.metadata.HiveException;
 import org.apache.hadoop.hive.ql.plan.AggregationDesc;
 import org.apache.hadoop.hive.ql.udf.generic.GenericUDAFEvaluator;
 import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
+import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
+import org.apache.hadoop.hive.ql.udf.generic.GenericUDAFEvaluator.Mode;
 
 /**
  * Base class for aggregation expressions.
@@ -35,19 +40,64 @@ public abstract class VectorAggregateExpression  implements Serializable {
 
   private static final long serialVersionUID = 1L;
 
+  protected final VectorAggregationDesc vecAggrDesc;
+
   protected final VectorExpression inputExpression;
+  protected final TypeInfo inputTypeInfo;
+
+  protected final TypeInfo outputTypeInfo;
+  protected final DataTypePhysicalVariation outputDataTypePhysicalVariation;
   protected final GenericUDAFEvaluator.Mode mode;
 
-  public VectorAggregateExpression(VectorExpression inputExpression,
-      GenericUDAFEvaluator.Mode mode) {
-    this.inputExpression = inputExpression;
-    this.mode = mode;
+  public static final int AVERAGE_COUNT_FIELD_INDEX = 0;
+  public static final int AVERAGE_SUM_FIELD_INDEX = 1;
+  public static final int AVERAGE_SOURCE_FIELD_INDEX = 2;
+
+  public static final int VARIANCE_COUNT_FIELD_INDEX = 0;
+  public static final int VARIANCE_SUM_FIELD_INDEX = 1;
+  public static final int VARIANCE_VARIANCE_FIELD_INDEX = 2;
+
+  // This constructor is used to momentarily create the object so match can be called.
+  public VectorAggregateExpression() {
+    this.vecAggrDesc = null;
+
+    // Null out final members.
+    inputExpression = null;
+    inputTypeInfo = null;
+
+    outputTypeInfo = null;
+    outputDataTypePhysicalVariation = null;
+
+    mode = null;
+  }
+
+  public VectorAggregateExpression(VectorAggregationDesc vecAggrDesc) {
+    this.vecAggrDesc = vecAggrDesc;
+
+    inputExpression = vecAggrDesc.getInputExpression();
+    if (inputExpression != null) {
+      inputTypeInfo = inputExpression.getOutputTypeInfo();
+    } else {
+      inputTypeInfo = null;
+    }
+
+    outputTypeInfo =  vecAggrDesc.getOutputTypeInfo();
+    outputDataTypePhysicalVariation = vecAggrDesc.getOutputDataTypePhysicalVariation();
+
+    mode = vecAggrDesc.getAggrDesc().getMode();
   }
 
   public VectorExpression getInputExpression() {
     return inputExpression;
   }
 
+  public TypeInfo getOutputTypeInfo() {
+    return outputTypeInfo;
+  }
+  public DataTypePhysicalVariation getOutputDataTypePhysicalVariation() {
+    return outputDataTypePhysicalVariation;
+  }
+
   /**
    * Buffer interface to store aggregates.
    */
@@ -57,37 +107,43 @@ public abstract class VectorAggregateExpression  implements Serializable {
     void reset();
   };
 
+  /*
+   *    VectorAggregateExpression()
+   *    VectorAggregateExpression(VectorAggregationDesc vecAggrDesc)
+   *
+   *    AggregationBuffer getNewAggregationBuffer()
+   *    void aggregateInput(AggregationBuffer agg, VectorizedRowBatch unit)
+   *    void aggregateInputSelection(VectorAggregationBufferRow[] aggregationBufferSets,
+   *                int aggregateIndex, VectorizedRowBatch vrg)
+   *    void reset(AggregationBuffer agg)
+   *    long getAggregationBufferFixedSize()
+   *
+   *    boolean matches(String name, ColumnVector.Type inputColVectorType,
+   *                ColumnVector.Type outputColVectorType, Mode mode)
+   *    assignRowColumn(VectorizedRowBatch batch, int batchIndex, int columnNum,
+   *                AggregationBuffer agg)
+   *
+   */
   public abstract AggregationBuffer getNewAggregationBuffer() throws HiveException;
   public abstract void aggregateInput(AggregationBuffer agg, VectorizedRowBatch unit)
         throws HiveException;
   public abstract void aggregateInputSelection(VectorAggregationBufferRow[] aggregationBufferSets,
       int aggregateIndex, VectorizedRowBatch vrg) throws HiveException;
   public abstract void reset(AggregationBuffer agg) throws HiveException;
-  public abstract Object evaluateOutput(AggregationBuffer agg) throws HiveException;
-
-  public abstract ObjectInspector getOutputObjectInspector();
   public abstract long getAggregationBufferFixedSize();
   public boolean hasVariableSize() {
     return false;
   }
 
-  public abstract void init(AggregationDesc desc) throws HiveException;
+  public abstract boolean matches(String name, ColumnVector.Type inputColVectorType,
+      ColumnVector.Type outputColVectorType, Mode mode);
+
+  public abstract void assignRowColumn(VectorizedRowBatch batch, int batchIndex, int columnNum,
+      AggregationBuffer agg) throws HiveException;
 
   @Override
   public String toString() {
-    StringBuilder sb = new StringBuilder();
-    sb.append(this.getClass().getSimpleName());
-    VectorExpression inputExpression = getInputExpression();
-    if (inputExpression != null) {
-      sb.append("(");
-      sb.append(inputExpression.toString());
-      sb.append(") -> ");
-    } else {
-      sb.append("(*) -> ");
-    }
-    ObjectInspector outputObjectInspector = getOutputObjectInspector();
-    sb.append(outputObjectInspector.getTypeName());
-    return sb.toString();
+    return vecAggrDesc.toString();
   }
 }
 

http://git-wip-us.apache.org/repos/asf/hive/blob/e63ebccc/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFBloomFilter.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFBloomFilter.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFBloomFilter.java
index 0e308f9..9d1a2b8 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFBloomFilter.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFBloomFilter.java
@@ -24,22 +24,26 @@ import java.io.IOException;
 import org.apache.hadoop.hive.common.type.HiveDecimal;
 import org.apache.hadoop.hive.ql.exec.vector.BytesColumnVector;
 import org.apache.hadoop.hive.ql.exec.vector.ColumnVector;
+import org.apache.hadoop.hive.ql.exec.vector.ColumnVector.Type;
 import org.apache.hadoop.hive.ql.exec.vector.DecimalColumnVector;
 import org.apache.hadoop.hive.ql.exec.vector.DoubleColumnVector;
 import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector;
 import org.apache.hadoop.hive.ql.exec.vector.TimestampColumnVector;
 import org.apache.hadoop.hive.ql.exec.vector.VectorAggregationBufferRow;
+import org.apache.hadoop.hive.ql.exec.vector.VectorAggregationDesc;
 import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor;
 import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch;
 import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression;
+import org.apache.hadoop.hive.ql.exec.vector.expressions.aggregates.VectorAggregateExpression.AggregationBuffer;
+import org.apache.hadoop.hive.ql.exec.vector.expressions.aggregates.VectorUDAFCount.Aggregation;
 import org.apache.hadoop.hive.ql.metadata.HiveException;
 import org.apache.hadoop.hive.ql.plan.AggregationDesc;
 import org.apache.hadoop.hive.ql.udf.generic.GenericUDAFBloomFilter.GenericUDAFBloomFilterEvaluator;
+import org.apache.hadoop.hive.ql.udf.generic.GenericUDAFEvaluator.Mode;
 import org.apache.hadoop.hive.ql.udf.generic.GenericUDAFEvaluator;
 import org.apache.hadoop.hive.ql.util.JavaDataModel;
 import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
 import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
-import org.apache.hadoop.io.BytesWritable;
 import org.apache.hadoop.io.IOUtils;
 import org.apache.hive.common.util.BloomKFilter;
 
@@ -50,7 +54,6 @@ public class VectorUDAFBloomFilter extends VectorAggregateExpression {
   private long expectedEntries = -1;
   private ValueProcessor valueProcessor;
   transient private int bitSetSize;
-  transient private BytesWritable bw;
   transient private ByteArrayOutputStream byteStream;
 
   /**
@@ -76,42 +79,50 @@ public class VectorUDAFBloomFilter extends VectorAggregateExpression {
     }
   }
 
-  public VectorUDAFBloomFilter(VectorExpression inputExpression,
-      GenericUDAFEvaluator.Mode mode) {
-    super(inputExpression, mode);
+  // This constructor is used to momentarily create the object so match can be called.
+  public VectorUDAFBloomFilter() {
+    super();
+  }
+
+  public VectorUDAFBloomFilter(VectorAggregationDesc vecAggrDesc) {
+    super(vecAggrDesc);
+    init();
   }
 
   private void init() {
+
+    GenericUDAFBloomFilterEvaluator udafBloomFilter =
+        (GenericUDAFBloomFilterEvaluator) vecAggrDesc.getEvaluator();
+    expectedEntries = udafBloomFilter.getExpectedEntries();
+
     bitSetSize = -1;
-    bw = new BytesWritable();
     byteStream = new ByteArrayOutputStream();
 
     // Instantiate the ValueProcessor based on the input type
-    VectorExpressionDescriptor.ArgumentType inputType =
-        VectorExpressionDescriptor.ArgumentType.fromHiveTypeName(inputExpression.getOutputType());
-    switch (inputType) {
-    case INT_FAMILY:
-    case DATE:
+    ColumnVector.Type colVectorType;
+    try {
+    colVectorType = inputExpression.getOutputColumnVectorType();
+    } catch (HiveException e) {
+      throw new RuntimeException(e);
+    }
+    switch (colVectorType) {
+    case LONG:
       valueProcessor = new ValueProcessorLong();
       break;
-    case FLOAT_FAMILY:
+    case DOUBLE:
       valueProcessor = new ValueProcessorDouble();
       break;
     case DECIMAL:
       valueProcessor = new ValueProcessorDecimal();
       break;
-    case STRING:
-    case CHAR:
-    case VARCHAR:
-    case STRING_FAMILY:
-    case BINARY:
+    case BYTES:
       valueProcessor = new ValueProcessorBytes();
       break;
     case TIMESTAMP:
       valueProcessor = new ValueProcessorTimestamp();
       break;
     default:
-      throw new IllegalStateException("Unsupported type " + inputType);
+      throw new IllegalStateException("Unsupported column vector type " + colVectorType);
     }
   }
 
@@ -129,7 +140,7 @@ public class VectorUDAFBloomFilter extends VectorAggregateExpression {
 
     inputExpression.evaluate(batch);
 
-    ColumnVector inputColumn =  batch.cols[this.inputExpression.getOutputColumn()];
+    ColumnVector inputColumn =  batch.cols[this.inputExpression.getOutputColumnNum()];
 
     int batchSize = batch.size;
 
@@ -220,7 +231,7 @@ public class VectorUDAFBloomFilter extends VectorAggregateExpression {
 
     inputExpression.evaluate(batch);
 
-    ColumnVector inputColumn = batch.cols[this.inputExpression.getOutputColumn()];
+    ColumnVector inputColumn = batch.cols[this.inputExpression.getOutputColumnNum()];
 
     if (inputColumn.noNulls) {
       if (inputColumn.isRepeating) {
@@ -352,27 +363,6 @@ public class VectorUDAFBloomFilter extends VectorAggregateExpression {
   }
 
   @Override
-  public Object evaluateOutput(AggregationBuffer agg) throws HiveException {
-    try {
-      Aggregation bfAgg = (Aggregation) agg;
-      byteStream.reset();
-      BloomKFilter.serialize(byteStream, bfAgg.bf);
-      byte[] bytes = byteStream.toByteArray();
-      bw.set(bytes, 0, bytes.length);
-      return bw;
-    } catch (IOException err) {
-      throw new HiveException("Error encountered while serializing bloomfilter", err);
-    } finally {
-      IOUtils.closeStream(byteStream);
-    }
-  }
-
-  @Override
-  public ObjectInspector getOutputObjectInspector() {
-    return PrimitiveObjectInspectorFactory.writableBinaryObjectInspector;
-  }
-
-  @Override
   public long getAggregationBufferFixedSize() {
     if (bitSetSize < 0) {
       // Not pretty, but we need a way to get the size
@@ -393,15 +383,6 @@ public class VectorUDAFBloomFilter extends VectorAggregateExpression {
         model.memoryAlign());
   }
 
-  @Override
-  public void init(AggregationDesc desc) throws HiveException {
-    init();
-
-    GenericUDAFBloomFilterEvaluator udafBloomFilter =
-        (GenericUDAFBloomFilterEvaluator) desc.getGenericUDAFEvaluator();
-    expectedEntries = udafBloomFilter.getExpectedEntries();
-  }
-
   public long getExpectedEntries() {
     return expectedEntries;
   }
@@ -461,4 +442,41 @@ public class VectorUDAFBloomFilter extends VectorAggregateExpression {
       myagg.bf.addLong(inputColumn.time[i]);
     }
   }
+
+  @Override
+  public boolean matches(String name, ColumnVector.Type inputColVectorType,
+      ColumnVector.Type outputColVectorType, Mode mode) {
+
+    /*
+     * Bloom filter *any* input and output is BYTES.
+     *
+     * Just modes (PARTIAL1, COMPLETE).
+     */
+    return
+        name.equals("bloom_filter") &&
+        outputColVectorType == ColumnVector.Type.BYTES &&
+        (mode == Mode.PARTIAL1 || mode == Mode.COMPLETE);
+  }
+
+  @Override
+  public void assignRowColumn(VectorizedRowBatch batch, int batchIndex, int columnNum,
+      AggregationBuffer agg) throws HiveException {
+
+    BytesColumnVector outputColVector = (BytesColumnVector) batch.cols[columnNum];
+    Aggregation myagg = (Aggregation) agg;
+    outputColVector.isNull[batchIndex] = false;
+
+    try {
+      Aggregation bfAgg = (Aggregation) agg;
+      byteStream.reset();
+      BloomKFilter.serialize(byteStream, bfAgg.bf);
+      byte[] bytes = byteStream.toByteArray();
+
+      outputColVector.setVal(batchIndex, bytes);
+    } catch (IOException err) {
+      throw new HiveException("Error encountered while serializing bloomfilter", err);
+    } finally {
+      IOUtils.closeStream(byteStream);
+    }
+  }
 }