diff --git ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticColumn.txt ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticColumn.txt index e52fcc0..1e91941 100644 --- ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticColumn.txt +++ ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticColumn.txt @@ -24,6 +24,8 @@ import org.apache.hadoop.hive.ql.exec.vector.*; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; +import com.google.common.base.Preconditions; + /** * Generated from template ColumnArithmeticColumn.txt, which covers binary arithmetic * expressions between columns. @@ -55,6 +57,7 @@ public class extends VectorExpression { inputColVector1 = () batch.cols[colNum1]; inputColVector2 = () batch.cols[colNum2]; outputColVector = () batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; int n = batch.size; [] vector1 = inputColVector1.vector; diff --git ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticColumnDecimal.txt ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticColumnDecimal.txt index e1df589..590f76f 100644 --- ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticColumnDecimal.txt +++ ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticColumnDecimal.txt @@ -26,6 +26,8 @@ import org.apache.hadoop.hive.ql.exec.vector.expressions.DecimalUtil; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable; +import com.google.common.base.Preconditions; + /** * Generated from template ColumnArithmeticColumnDecimal.txt, which covers binary arithmetic * expressions between a column and a scalar. @@ -59,6 +61,7 @@ public class extends VectorExpression { DecimalColumnVector inputColVector1 = (DecimalColumnVector) batch.cols[colNum1]; DecimalColumnVector inputColVector2 = (DecimalColumnVector) batch.cols[colNum2]; DecimalColumnVector outputColVector = (DecimalColumnVector) batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; int n = batch.size; HiveDecimalWritable[] vector1 = inputColVector1.vector; diff --git ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticColumnWithConvert.txt ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticColumnWithConvert.txt index bcd10a2..2511a2b 100644 --- ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticColumnWithConvert.txt +++ ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticColumnWithConvert.txt @@ -24,6 +24,8 @@ import org.apache.hadoop.hive.ql.exec.vector.*; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; +import com.google.common.base.Preconditions; + /** * Generated from template ColumnArithmeticColumnWithConvert.txt, which covers binary arithmetic * expressions between columns. @@ -55,6 +57,7 @@ public class extends VectorExpression { inputColVector1 = () batch.cols[colNum1]; inputColVector2 = () batch.cols[colNum2]; outputColVector = () batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; int n = batch.size; [] vector1 = inputColVector1.vector; diff --git ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticScalar.txt ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticScalar.txt index 87335f1..e632bf8 100644 --- ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticScalar.txt +++ ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticScalar.txt @@ -25,6 +25,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.expressions.NullUtil; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; +import com.google.common.base.Preconditions; + /** * Generated from template ColumnArithmeticScalar.txt, which covers binary arithmetic * expressions between a column and a scalar. @@ -55,6 +57,7 @@ public class extends VectorExpression { inputColVector = () batch.cols[colNum]; outputColVector = () batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] inputIsNull = inputColVector.isNull; boolean[] outputIsNull = outputColVector.isNull; diff --git ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticScalarDecimal.txt ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticScalarDecimal.txt index 0bb1532..492cd6a 100644 --- ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticScalarDecimal.txt +++ ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticScalarDecimal.txt @@ -27,6 +27,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable; import org.apache.hadoop.hive.common.type.HiveDecimal; +import com.google.common.base.Preconditions; + /** * Generated from template ColumnArithmeticScalarDecimal.txt, which covers binary arithmetic * expressions between a column and a scalar. @@ -59,6 +61,7 @@ public class extends VectorExpression { DecimalColumnVector inputColVector = (DecimalColumnVector) batch.cols[colNum]; DecimalColumnVector outputColVector = (DecimalColumnVector) batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] inputIsNull = inputColVector.isNull; boolean[] outputIsNull = outputColVector.isNull; diff --git ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticScalarWithConvert.txt ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticScalarWithConvert.txt index 105eb92..26e75e5 100644 --- ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticScalarWithConvert.txt +++ ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticScalarWithConvert.txt @@ -26,6 +26,8 @@ import org.apache.hadoop.hive.ql.exec.vector.expressions.NullUtil; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; import org.apache.hadoop.hive.ql.exec.vector.*; +import com.google.common.base.Preconditions; + /** * Generated from template ColumnArithmeticScalarWithConvert.txt, which covers binary arithmetic * expressions between a column and a scalar. @@ -56,6 +58,7 @@ public class extends VectorExpression { inputColVector = () batch.cols[colNum]; outputColVector = () batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] inputIsNull = inputColVector.isNull; boolean[] outputIsNull = outputColVector.isNull; diff --git ql/src/gen/vectorization/ExpressionTemplates/ColumnCompareColumn.txt ql/src/gen/vectorization/ExpressionTemplates/ColumnCompareColumn.txt index f2b4c81..ffdee57 100644 --- ql/src/gen/vectorization/ExpressionTemplates/ColumnCompareColumn.txt +++ ql/src/gen/vectorization/ExpressionTemplates/ColumnCompareColumn.txt @@ -24,6 +24,8 @@ import org.apache.hadoop.hive.ql.exec.vector.*; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; +import com.google.common.base.Preconditions; + /** * Generated from template ColumnArithmeticColumn.txt, which covers binary arithmetic * expressions between columns. @@ -55,6 +57,7 @@ public class extends VectorExpression { inputColVector1 = () batch.cols[colNum1]; inputColVector2 = () batch.cols[colNum2]; outputColVector = () batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; int n = batch.size; [] vector1 = inputColVector1.vector; diff --git ql/src/gen/vectorization/ExpressionTemplates/ColumnCompareScalar.txt ql/src/gen/vectorization/ExpressionTemplates/ColumnCompareScalar.txt index 2438ee4..b6a0f9e 100644 --- ql/src/gen/vectorization/ExpressionTemplates/ColumnCompareScalar.txt +++ ql/src/gen/vectorization/ExpressionTemplates/ColumnCompareScalar.txt @@ -24,6 +24,8 @@ import org.apache.hadoop.hive.ql.exec.vector.; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; +import com.google.common.base.Preconditions; + /** * Generated from template ColumnCompareScalar.txt, which covers binary comparison * expressions between a column and a scalar. The boolean output is stored in a @@ -55,6 +57,7 @@ public class extends VectorExpression { inputColVector = () batch.cols[colNum]; outputColVector = () batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] nullPos = inputColVector.isNull; boolean[] outNulls = outputColVector.isNull; diff --git ql/src/gen/vectorization/ExpressionTemplates/ColumnDivideColumn.txt ql/src/gen/vectorization/ExpressionTemplates/ColumnDivideColumn.txt index b0f6eb1..7ce1e91 100644 --- ql/src/gen/vectorization/ExpressionTemplates/ColumnDivideColumn.txt +++ ql/src/gen/vectorization/ExpressionTemplates/ColumnDivideColumn.txt @@ -24,6 +24,8 @@ import org.apache.hadoop.hive.ql.exec.vector.*; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; +import com.google.common.base.Preconditions; + /** * Generated from template ColumnArithmeticColumn.txt, which covers binary arithmetic * expressions between columns. @@ -55,6 +57,7 @@ public class extends VectorExpression { inputColVector1 = () batch.cols[colNum1]; inputColVector2 = () batch.cols[colNum2]; outputColVector = () batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; int n = batch.size; [] vector1 = inputColVector1.vector; diff --git ql/src/gen/vectorization/ExpressionTemplates/ColumnDivideColumnDecimal.txt ql/src/gen/vectorization/ExpressionTemplates/ColumnDivideColumnDecimal.txt index 623bcfb..8dc3750 100644 --- ql/src/gen/vectorization/ExpressionTemplates/ColumnDivideColumnDecimal.txt +++ ql/src/gen/vectorization/ExpressionTemplates/ColumnDivideColumnDecimal.txt @@ -26,6 +26,8 @@ import org.apache.hadoop.hive.ql.exec.vector.expressions.DecimalUtil; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable; +import com.google.common.base.Preconditions; + /** * Generated from template ColumnArithmeticColumnDecimal.txt, which covers binary arithmetic * expressions between a column and a scalar. @@ -59,6 +61,7 @@ public class extends VectorExpression { DecimalColumnVector inputColVector1 = (DecimalColumnVector) batch.cols[colNum1]; DecimalColumnVector inputColVector2 = (DecimalColumnVector) batch.cols[colNum2]; DecimalColumnVector outputColVector = (DecimalColumnVector) batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; int n = batch.size; HiveDecimalWritable[] vector1 = inputColVector1.vector; diff --git ql/src/gen/vectorization/ExpressionTemplates/ColumnDivideScalar.txt ql/src/gen/vectorization/ExpressionTemplates/ColumnDivideScalar.txt index c6614ab..9fef1f3 100644 --- ql/src/gen/vectorization/ExpressionTemplates/ColumnDivideScalar.txt +++ ql/src/gen/vectorization/ExpressionTemplates/ColumnDivideScalar.txt @@ -25,6 +25,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.expressions.NullUtil; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; +import com.google.common.base.Preconditions; + /** * Generated from template ColumnArithmeticScalar.txt, which covers binary arithmetic * expressions between a column and a scalar. @@ -55,6 +57,7 @@ public class extends VectorExpression { inputColVector = () batch.cols[colNum]; outputColVector = () batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] inputIsNull = inputColVector.isNull; boolean[] outputIsNull = outputColVector.isNull; diff --git ql/src/gen/vectorization/ExpressionTemplates/ColumnDivideScalarDecimal.txt ql/src/gen/vectorization/ExpressionTemplates/ColumnDivideScalarDecimal.txt index 841ef93..9ebd310 100644 --- ql/src/gen/vectorization/ExpressionTemplates/ColumnDivideScalarDecimal.txt +++ ql/src/gen/vectorization/ExpressionTemplates/ColumnDivideScalarDecimal.txt @@ -27,6 +27,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable; import org.apache.hadoop.hive.common.type.HiveDecimal; +import com.google.common.base.Preconditions; + /** * Generated from template ColumnDivideScalarDecimal.txt, which covers binary arithmetic * expressions between a column and a scalar. @@ -59,6 +61,7 @@ public class extends VectorExpression { DecimalColumnVector inputColVector = (DecimalColumnVector) batch.cols[colNum]; DecimalColumnVector outputColVector = (DecimalColumnVector) batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] inputIsNull = inputColVector.isNull; boolean[] outputIsNull = outputColVector.isNull; diff --git ql/src/gen/vectorization/ExpressionTemplates/ColumnUnaryFunc.txt ql/src/gen/vectorization/ExpressionTemplates/ColumnUnaryFunc.txt index cf690db..6876fbe 100644 --- ql/src/gen/vectorization/ExpressionTemplates/ColumnUnaryFunc.txt +++ ql/src/gen/vectorization/ExpressionTemplates/ColumnUnaryFunc.txt @@ -24,6 +24,8 @@ import org.apache.hadoop.hive.ql.exec.vector.*; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; +import com.google.common.base.Preconditions; + public class extends VectorExpression { private static final long serialVersionUID = 1L; @@ -49,6 +51,7 @@ public class extends VectorExpression { inputColVector = () batch.cols[colNum]; outputColVector = () batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] inputIsNull = inputColVector.isNull; boolean[] outputIsNull = outputColVector.isNull; diff --git ql/src/gen/vectorization/ExpressionTemplates/ColumnUnaryMinus.txt ql/src/gen/vectorization/ExpressionTemplates/ColumnUnaryMinus.txt index b52b7c7..dd88047 100644 --- ql/src/gen/vectorization/ExpressionTemplates/ColumnUnaryMinus.txt +++ ql/src/gen/vectorization/ExpressionTemplates/ColumnUnaryMinus.txt @@ -23,6 +23,8 @@ import org.apache.hadoop.hive.ql.exec.vector.*; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; +import com.google.common.base.Preconditions; + /** * Generated from template ColumnUnaryMinus.txt, which covers unary negation operator. */ @@ -52,6 +54,7 @@ public class extends VectorExpression { inputColVector = () batch.cols[colNum]; outputColVector = () batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] inputIsNull = inputColVector.isNull; boolean[] outputIsNull = outputColVector.isNull; diff --git ql/src/gen/vectorization/ExpressionTemplates/DTIColumnArithmeticDTIColumnNoConvert.txt ql/src/gen/vectorization/ExpressionTemplates/DTIColumnArithmeticDTIColumnNoConvert.txt index f2ec645..cf9e7db 100644 --- ql/src/gen/vectorization/ExpressionTemplates/DTIColumnArithmeticDTIColumnNoConvert.txt +++ ql/src/gen/vectorization/ExpressionTemplates/DTIColumnArithmeticDTIColumnNoConvert.txt @@ -27,6 +27,8 @@ import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; +import com.google.common.base.Preconditions; + /** * Generated from template DTIColumnArithmeticDTIColumnNoConvert.txt, which covers arithmetic * expressions between a datetime/interval column and a datetime/interval column. diff --git ql/src/gen/vectorization/ExpressionTemplates/DTIColumnArithmeticDTIScalarNoConvert.txt ql/src/gen/vectorization/ExpressionTemplates/DTIColumnArithmeticDTIScalarNoConvert.txt index 1a360b8..6c82339 100644 --- ql/src/gen/vectorization/ExpressionTemplates/DTIColumnArithmeticDTIScalarNoConvert.txt +++ ql/src/gen/vectorization/ExpressionTemplates/DTIColumnArithmeticDTIScalarNoConvert.txt @@ -21,6 +21,8 @@ package org.apache.hadoop.hive.ql.exec.vector.expressions.gen; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; +import com.google.common.base.Preconditions; + /** * Generated from template DTIColumnArithmeticDTIScalarNoConvert.txt, which covers arithmetic diff --git ql/src/gen/vectorization/ExpressionTemplates/DTIColumnCompareScalar.txt ql/src/gen/vectorization/ExpressionTemplates/DTIColumnCompareScalar.txt index 9d692cb..f23bbcd 100644 --- ql/src/gen/vectorization/ExpressionTemplates/DTIColumnCompareScalar.txt +++ ql/src/gen/vectorization/ExpressionTemplates/DTIColumnCompareScalar.txt @@ -21,6 +21,8 @@ package org.apache.hadoop.hive.ql.exec.vector.expressions.gen; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; +import com.google.common.base.Preconditions; + /** * Generated from template DTIColumnCompareScalar.txt, which covers comparison diff --git ql/src/gen/vectorization/ExpressionTemplates/DTIScalarArithmeticDTIColumnNoConvert.txt ql/src/gen/vectorization/ExpressionTemplates/DTIScalarArithmeticDTIColumnNoConvert.txt index 753ea71..137a0d2 100644 --- ql/src/gen/vectorization/ExpressionTemplates/DTIScalarArithmeticDTIColumnNoConvert.txt +++ ql/src/gen/vectorization/ExpressionTemplates/DTIScalarArithmeticDTIColumnNoConvert.txt @@ -27,6 +27,8 @@ import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; +import com.google.common.base.Preconditions; + /** * Generated from template DTIScalarArithmeticDTIColumnNoConvert.txt, which covers arithmetic * expressions between a datetime/interval scalar and a datetime/interval column. diff --git ql/src/gen/vectorization/ExpressionTemplates/DTIScalarCompareColumn.txt ql/src/gen/vectorization/ExpressionTemplates/DTIScalarCompareColumn.txt index fdd453a..88d0201 100644 --- ql/src/gen/vectorization/ExpressionTemplates/DTIScalarCompareColumn.txt +++ ql/src/gen/vectorization/ExpressionTemplates/DTIScalarCompareColumn.txt @@ -27,6 +27,8 @@ import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; +import com.google.common.base.Preconditions; + /** * Generated from template DTIScalarCompareColumn.txt, which covers comparison * expressions between a datetime/interval scalar and a column of the same type. The boolean output diff --git ql/src/gen/vectorization/ExpressionTemplates/DateTimeColumnArithmeticIntervalColumnWithConvert.txt ql/src/gen/vectorization/ExpressionTemplates/DateTimeColumnArithmeticIntervalColumnWithConvert.txt index cd7a1e7..86b6a56 100644 --- ql/src/gen/vectorization/ExpressionTemplates/DateTimeColumnArithmeticIntervalColumnWithConvert.txt +++ ql/src/gen/vectorization/ExpressionTemplates/DateTimeColumnArithmeticIntervalColumnWithConvert.txt @@ -25,6 +25,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; import org.apache.hadoop.hive.ql.util.DateTimeMath; +import com.google.common.base.Preconditions; + /** * Generated from template DateTimeColumnArithmeticIntervalColumnWithConvert.txt, which covers binary arithmetic * expressions between columns. @@ -57,6 +59,7 @@ public class extends VectorExpression { inputColVector1 = () batch.cols[colNum1]; inputColVector2 = () batch.cols[colNum2]; outputColVector = () batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; int n = batch.size; [] vector1 = inputColVector1.vector; diff --git ql/src/gen/vectorization/ExpressionTemplates/DateTimeColumnArithmeticIntervalScalarWithConvert.txt ql/src/gen/vectorization/ExpressionTemplates/DateTimeColumnArithmeticIntervalScalarWithConvert.txt index abee249..68bbecb 100644 --- ql/src/gen/vectorization/ExpressionTemplates/DateTimeColumnArithmeticIntervalScalarWithConvert.txt +++ ql/src/gen/vectorization/ExpressionTemplates/DateTimeColumnArithmeticIntervalScalarWithConvert.txt @@ -27,6 +27,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; import org.apache.hadoop.hive.ql.exec.vector.*; import org.apache.hadoop.hive.ql.util.DateTimeMath; +import com.google.common.base.Preconditions; + /** * Generated from template ColumnArithmeticScalarWithConvert.txt, which covers binary arithmetic * expressions between a column and a scalar. @@ -58,6 +60,7 @@ public class extends VectorExpression { inputColVector = () batch.cols[colNum]; outputColVector = () batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] inputIsNull = inputColVector.isNull; boolean[] outputIsNull = outputColVector.isNull; diff --git ql/src/gen/vectorization/ExpressionTemplates/DateTimeScalarArithmeticIntervalColumnWithConvert.txt ql/src/gen/vectorization/ExpressionTemplates/DateTimeScalarArithmeticIntervalColumnWithConvert.txt index 93a441a..682bf59 100644 --- ql/src/gen/vectorization/ExpressionTemplates/DateTimeScalarArithmeticIntervalColumnWithConvert.txt +++ ql/src/gen/vectorization/ExpressionTemplates/DateTimeScalarArithmeticIntervalColumnWithConvert.txt @@ -34,6 +34,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.expressions.NullUtil; import org.apache.hadoop.hive.ql.util.DateTimeMath; +import com.google.common.base.Preconditions; + /** * Generated from template DateTimeScalarArithmeticIntervalColumnWithConvert.txt. * Implements a vectorized arithmetic operator with a scalar on the left and a @@ -71,6 +73,7 @@ public class extends VectorExpression { inputColVector = () batch.cols[colNum]; outputColVector = () batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] inputIsNull = inputColVector.isNull; boolean[] outputIsNull = outputColVector.isNull; diff --git ql/src/gen/vectorization/ExpressionTemplates/DecimalColumnUnaryFunc.txt ql/src/gen/vectorization/ExpressionTemplates/DecimalColumnUnaryFunc.txt index 619015e..0d217ec 100644 --- ql/src/gen/vectorization/ExpressionTemplates/DecimalColumnUnaryFunc.txt +++ ql/src/gen/vectorization/ExpressionTemplates/DecimalColumnUnaryFunc.txt @@ -29,6 +29,8 @@ import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector; import org.apache.hadoop.hive.ql.exec.vector.expressions.DecimalUtil; import java.util.Arrays; +import com.google.common.base.Preconditions; + public class extends VectorExpression { private static final long serialVersionUID = 1L; @@ -54,6 +56,7 @@ public class extends VectorExpression { DecimalColumnVector inputColVector = (DecimalColumnVector) batch.cols[colNum]; outputColVector = () batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] inputIsNull = inputColVector.isNull; boolean[] outputIsNull = outputColVector.isNull; diff --git ql/src/gen/vectorization/ExpressionTemplates/IfExprColumnScalar.txt ql/src/gen/vectorization/ExpressionTemplates/IfExprColumnScalar.txt index 3a75a26..0ca15a6 100644 --- ql/src/gen/vectorization/ExpressionTemplates/IfExprColumnScalar.txt +++ ql/src/gen/vectorization/ExpressionTemplates/IfExprColumnScalar.txt @@ -25,6 +25,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.expressions.NullUtil; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; +import com.google.common.base.Preconditions; + /** * Compute IF(expr1, expr2, expr3) for 3 input column expressions. * The first is always a boolean (LongColumnVector). @@ -60,6 +62,7 @@ public class extends VectorExpression { LongColumnVector arg1ColVector = (LongColumnVector) batch.cols[arg1Column]; arg2ColVector = () batch.cols[arg2Column]; outputColVector = () batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] outputIsNull = outputColVector.isNull; outputColVector.noNulls = arg2ColVector.noNulls; // nulls can only come from arg2 diff --git ql/src/gen/vectorization/ExpressionTemplates/IfExprScalarColumn.txt ql/src/gen/vectorization/ExpressionTemplates/IfExprScalarColumn.txt index 648b776..3dbbdb2 100644 --- ql/src/gen/vectorization/ExpressionTemplates/IfExprScalarColumn.txt +++ ql/src/gen/vectorization/ExpressionTemplates/IfExprScalarColumn.txt @@ -25,6 +25,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.expressions.NullUtil; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; +import com.google.common.base.Preconditions; + /** * Compute IF(expr1, expr2, expr3) for 3 input column expressions. * The first is always a boolean (LongColumnVector). @@ -60,6 +62,7 @@ public class extends VectorExpression { LongColumnVector arg1ColVector = (LongColumnVector) batch.cols[arg1Column]; arg3ColVector = () batch.cols[arg3Column]; outputColVector = () batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] outputIsNull = outputColVector.isNull; outputColVector.noNulls = arg3ColVector.noNulls; // nulls can only come from arg3 column vector diff --git ql/src/gen/vectorization/ExpressionTemplates/IfExprScalarScalar.txt ql/src/gen/vectorization/ExpressionTemplates/IfExprScalarScalar.txt index def9863..3888ae7 100644 --- ql/src/gen/vectorization/ExpressionTemplates/IfExprScalarScalar.txt +++ ql/src/gen/vectorization/ExpressionTemplates/IfExprScalarScalar.txt @@ -25,6 +25,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; import java.util.Arrays; +import com.google.common.base.Preconditions; + /** * Compute IF(expr1, expr2, expr3) for 3 input expressions. * The first is always a boolean (LongColumnVector). @@ -60,6 +62,7 @@ public class extends VectorExpression { LongColumnVector arg1ColVector = (LongColumnVector) batch.cols[arg1Column]; outputColVector = () batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] outputIsNull = outputColVector.isNull; outputColVector.noNulls = false; // output is a scalar which we know is non null diff --git ql/src/gen/vectorization/ExpressionTemplates/IntervalColumnArithmeticDateTimeColumnWithConvert.txt ql/src/gen/vectorization/ExpressionTemplates/IntervalColumnArithmeticDateTimeColumnWithConvert.txt index c182557..482994e 100644 --- ql/src/gen/vectorization/ExpressionTemplates/IntervalColumnArithmeticDateTimeColumnWithConvert.txt +++ ql/src/gen/vectorization/ExpressionTemplates/IntervalColumnArithmeticDateTimeColumnWithConvert.txt @@ -25,6 +25,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; import org.apache.hadoop.hive.ql.util.DateTimeMath; +import com.google.common.base.Preconditions; + /** * Generated from template IntervalColumnArithmeticDateTimeColumnWithConvert.txt, which covers binary arithmetic * expressions between columns. @@ -57,6 +59,7 @@ public class extends VectorExpression { inputColVector1 = () batch.cols[colNum1]; inputColVector2 = () batch.cols[colNum2]; outputColVector = () batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; int n = batch.size; [] vector1 = inputColVector1.vector; diff --git ql/src/gen/vectorization/ExpressionTemplates/IntervalColumnArithmeticDateTimeScalarWithConvert.txt ql/src/gen/vectorization/ExpressionTemplates/IntervalColumnArithmeticDateTimeScalarWithConvert.txt index 8fa3563..98ca519 100644 --- ql/src/gen/vectorization/ExpressionTemplates/IntervalColumnArithmeticDateTimeScalarWithConvert.txt +++ ql/src/gen/vectorization/ExpressionTemplates/IntervalColumnArithmeticDateTimeScalarWithConvert.txt @@ -27,6 +27,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; import org.apache.hadoop.hive.ql.exec.vector.*; import org.apache.hadoop.hive.ql.util.DateTimeMath; +import com.google.common.base.Preconditions; + /** * Generated from template IntervalColumnArithmeticDateTimeScalarWithConvert.txt, which covers binary arithmetic * expressions between a column and a scalar. @@ -58,6 +60,7 @@ public class extends VectorExpression { inputColVector = () batch.cols[colNum]; outputColVector = () batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] inputIsNull = inputColVector.isNull; boolean[] outputIsNull = outputColVector.isNull; diff --git ql/src/gen/vectorization/ExpressionTemplates/IntervalScalarArithmeticDateTimeColumnWithConvert.txt ql/src/gen/vectorization/ExpressionTemplates/IntervalScalarArithmeticDateTimeColumnWithConvert.txt index 0464a5e..7233bcb 100644 --- ql/src/gen/vectorization/ExpressionTemplates/IntervalScalarArithmeticDateTimeColumnWithConvert.txt +++ ql/src/gen/vectorization/ExpressionTemplates/IntervalScalarArithmeticDateTimeColumnWithConvert.txt @@ -34,6 +34,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.expressions.NullUtil; import org.apache.hadoop.hive.ql.util.DateTimeMath; +import com.google.common.base.Preconditions; + /** * Generated from template IntervalScalarArithmeticDateTimeColumnWithConvert.txt. * Implements a vectorized arithmetic operator with a scalar on the left and a @@ -71,6 +73,7 @@ public class extends VectorExpression { inputColVector = () batch.cols[colNum]; outputColVector = () batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] inputIsNull = inputColVector.isNull; boolean[] outputIsNull = outputColVector.isNull; diff --git ql/src/gen/vectorization/ExpressionTemplates/ScalarArithmeticColumn.txt ql/src/gen/vectorization/ExpressionTemplates/ScalarArithmeticColumn.txt index 4fcbdc0..2aff3df 100644 --- ql/src/gen/vectorization/ExpressionTemplates/ScalarArithmeticColumn.txt +++ ql/src/gen/vectorization/ExpressionTemplates/ScalarArithmeticColumn.txt @@ -31,6 +31,8 @@ import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.expressions.NullUtil; +import com.google.common.base.Preconditions; + /** * Generated from template ScalarArithmeticColumn.txt. * Implements a vectorized arithmetic operator with a scalar on the left and a @@ -67,6 +69,7 @@ public class extends VectorExpression { inputColVector = () batch.cols[colNum]; outputColVector = () batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] inputIsNull = inputColVector.isNull; boolean[] outputIsNull = outputColVector.isNull; diff --git ql/src/gen/vectorization/ExpressionTemplates/ScalarArithmeticColumnDecimal.txt ql/src/gen/vectorization/ExpressionTemplates/ScalarArithmeticColumnDecimal.txt index ea55bec..535a925 100644 --- ql/src/gen/vectorization/ExpressionTemplates/ScalarArithmeticColumnDecimal.txt +++ ql/src/gen/vectorization/ExpressionTemplates/ScalarArithmeticColumnDecimal.txt @@ -27,6 +27,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable; import org.apache.hadoop.hive.common.type.HiveDecimal; +import com.google.common.base.Preconditions; + /** * Generated from template ScalarArithmeticColumnDecimal.txt, which covers binary arithmetic * expressions between a scalar and a column. @@ -59,6 +61,7 @@ public class extends VectorExpression { DecimalColumnVector inputColVector = (DecimalColumnVector) batch.cols[colNum]; DecimalColumnVector outputColVector = (DecimalColumnVector) batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] inputIsNull = inputColVector.isNull; boolean[] outputIsNull = outputColVector.isNull; diff --git ql/src/gen/vectorization/ExpressionTemplates/ScalarArithmeticColumnWithConvert.txt ql/src/gen/vectorization/ExpressionTemplates/ScalarArithmeticColumnWithConvert.txt index 91887c8..bf63d3e 100644 --- ql/src/gen/vectorization/ExpressionTemplates/ScalarArithmeticColumnWithConvert.txt +++ ql/src/gen/vectorization/ExpressionTemplates/ScalarArithmeticColumnWithConvert.txt @@ -33,6 +33,8 @@ import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.expressions.NullUtil; +import com.google.common.base.Preconditions; + /** * Generated from template ScalarArithmeticColumnWithConvert.txt. * Implements a vectorized arithmetic operator with a scalar on the left and a @@ -69,6 +71,7 @@ public class extends VectorExpression { inputColVector = () batch.cols[colNum]; outputColVector = () batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] inputIsNull = inputColVector.isNull; boolean[] outputIsNull = outputColVector.isNull; diff --git ql/src/gen/vectorization/ExpressionTemplates/ScalarCompareColumn.txt ql/src/gen/vectorization/ExpressionTemplates/ScalarCompareColumn.txt index e6e59f5..857c9e5 100644 --- ql/src/gen/vectorization/ExpressionTemplates/ScalarCompareColumn.txt +++ ql/src/gen/vectorization/ExpressionTemplates/ScalarCompareColumn.txt @@ -24,6 +24,8 @@ import org.apache.hadoop.hive.ql.exec.vector.; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; +import com.google.common.base.Preconditions; + /** * Generated from template ColumnCompareScalar.txt, which covers binary comparison * expressions between a column and a scalar. The boolean output is stored in a @@ -55,6 +57,7 @@ public class extends VectorExpression { inputColVector = () batch.cols[colNum]; outputColVector = () batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] nullPos = inputColVector.isNull; boolean[] outNulls = outputColVector.isNull; diff --git ql/src/gen/vectorization/ExpressionTemplates/ScalarCompareTimestampColumn.txt ql/src/gen/vectorization/ExpressionTemplates/ScalarCompareTimestampColumn.txt index 7867610..975013c 100644 --- ql/src/gen/vectorization/ExpressionTemplates/ScalarCompareTimestampColumn.txt +++ ql/src/gen/vectorization/ExpressionTemplates/ScalarCompareTimestampColumn.txt @@ -30,6 +30,8 @@ import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; +import com.google.common.base.Preconditions; + /** * Generated from template ScalarCompareTimestampColumn.txt, which covers comparison * expressions between a timestamp column and a long or double scalar. The boolean output diff --git ql/src/gen/vectorization/ExpressionTemplates/ScalarDivideColumn.txt ql/src/gen/vectorization/ExpressionTemplates/ScalarDivideColumn.txt index f8a8457..5485e82 100644 --- ql/src/gen/vectorization/ExpressionTemplates/ScalarDivideColumn.txt +++ ql/src/gen/vectorization/ExpressionTemplates/ScalarDivideColumn.txt @@ -31,6 +31,8 @@ import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.expressions.NullUtil; +import com.google.common.base.Preconditions; + /** * Generated from template ScalarArithmeticColumn.txt. * Implements a vectorized arithmetic operator with a scalar on the left and a @@ -67,6 +69,7 @@ public class extends VectorExpression { inputColVector = () batch.cols[colNum]; outputColVector = () batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] inputIsNull = inputColVector.isNull; boolean[] outputIsNull = outputColVector.isNull; diff --git ql/src/gen/vectorization/ExpressionTemplates/ScalarDivideColumnDecimal.txt ql/src/gen/vectorization/ExpressionTemplates/ScalarDivideColumnDecimal.txt index c8a5d17..8000915 100644 --- ql/src/gen/vectorization/ExpressionTemplates/ScalarDivideColumnDecimal.txt +++ ql/src/gen/vectorization/ExpressionTemplates/ScalarDivideColumnDecimal.txt @@ -27,6 +27,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable; import org.apache.hadoop.hive.common.type.HiveDecimal; +import com.google.common.base.Preconditions; + /** * Generated from template ScalarDivideColumnDecimal.txt, which covers binary arithmetic * expressions between a scalar and a column. @@ -59,6 +61,7 @@ public class extends VectorExpression { DecimalColumnVector inputColVector = (DecimalColumnVector) batch.cols[colNum]; DecimalColumnVector outputColVector = (DecimalColumnVector) batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] inputIsNull = inputColVector.isNull; boolean[] outputIsNull = outputColVector.isNull; diff --git ql/src/gen/vectorization/ExpressionTemplates/StringGroupColumnCompareStringGroupColumn.txt ql/src/gen/vectorization/ExpressionTemplates/StringGroupColumnCompareStringGroupColumn.txt index e881037..3576fcc 100644 --- ql/src/gen/vectorization/ExpressionTemplates/StringGroupColumnCompareStringGroupColumn.txt +++ ql/src/gen/vectorization/ExpressionTemplates/StringGroupColumnCompareStringGroupColumn.txt @@ -25,6 +25,8 @@ import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; +import com.google.common.base.Preconditions; + /** * Filter the rows in a batch by comparing one string column to another. * This code is generated from a template. @@ -56,6 +58,7 @@ public class extends VectorExpression { BytesColumnVector inputColVector1 = (BytesColumnVector) batch.cols[colNum1]; BytesColumnVector inputColVector2 = (BytesColumnVector) batch.cols[colNum2]; LongColumnVector outputColVector = (LongColumnVector) batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] nullPos1 = inputColVector1.isNull; boolean[] nullPos2 = inputColVector2.isNull; diff --git ql/src/gen/vectorization/ExpressionTemplates/StringGroupColumnCompareStringGroupScalarBase.txt ql/src/gen/vectorization/ExpressionTemplates/StringGroupColumnCompareStringGroupScalarBase.txt index 92bf27a..dede302 100644 --- ql/src/gen/vectorization/ExpressionTemplates/StringGroupColumnCompareStringGroupScalarBase.txt +++ ql/src/gen/vectorization/ExpressionTemplates/StringGroupColumnCompareStringGroupScalarBase.txt @@ -25,6 +25,8 @@ import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; +import com.google.common.base.Preconditions; + /** * This is a generated class to evaluate a comparison on a vector of strings. */ @@ -43,6 +45,7 @@ public abstract class extends VectorExpression { } BytesColumnVector inputColVector = (BytesColumnVector) batch.cols[colNum]; LongColumnVector outputColVector = (LongColumnVector) batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] nullPos = inputColVector.isNull; boolean[] outNull = outputColVector.isNull; diff --git ql/src/gen/vectorization/ExpressionTemplates/StringGroupColumnCompareStringScalar.txt ql/src/gen/vectorization/ExpressionTemplates/StringGroupColumnCompareStringScalar.txt index 9b11c5e..278d205 100644 --- ql/src/gen/vectorization/ExpressionTemplates/StringGroupColumnCompareStringScalar.txt +++ ql/src/gen/vectorization/ExpressionTemplates/StringGroupColumnCompareStringScalar.txt @@ -27,6 +27,8 @@ import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; +import com.google.common.base.Preconditions; + /** * This is a generated class to evaluate a comparison on a vector of strings. */ diff --git ql/src/gen/vectorization/ExpressionTemplates/StringGroupColumnCompareTruncStringScalar.txt ql/src/gen/vectorization/ExpressionTemplates/StringGroupColumnCompareTruncStringScalar.txt index 8a92f54..2eb4e45 100644 --- ql/src/gen/vectorization/ExpressionTemplates/StringGroupColumnCompareTruncStringScalar.txt +++ ql/src/gen/vectorization/ExpressionTemplates/StringGroupColumnCompareTruncStringScalar.txt @@ -29,6 +29,8 @@ import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; +import com.google.common.base.Preconditions; + /** * This is a generated class to evaluate a comparison on a vector of strings. */ diff --git ql/src/gen/vectorization/ExpressionTemplates/StringGroupScalarCompareStringGroupColumnBase.txt ql/src/gen/vectorization/ExpressionTemplates/StringGroupScalarCompareStringGroupColumnBase.txt index 238dc93..061923c 100644 --- ql/src/gen/vectorization/ExpressionTemplates/StringGroupScalarCompareStringGroupColumnBase.txt +++ ql/src/gen/vectorization/ExpressionTemplates/StringGroupScalarCompareStringGroupColumnBase.txt @@ -25,6 +25,8 @@ import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; +import com.google.common.base.Preconditions; + /** * This is a generated class to evaluate a comparison on a vector of strings. * Do not edit the generated code directly. @@ -44,6 +46,7 @@ public abstract class extends VectorExpression { } BytesColumnVector inputColVector = (BytesColumnVector) batch.cols[colNum]; LongColumnVector outputColVector = (LongColumnVector) batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] nullPos = inputColVector.isNull; boolean[] outNull = outputColVector.isNull; diff --git ql/src/gen/vectorization/ExpressionTemplates/StringScalarCompareStringGroupColumn.txt ql/src/gen/vectorization/ExpressionTemplates/StringScalarCompareStringGroupColumn.txt index 5b5e02e..2fc46ee 100644 --- ql/src/gen/vectorization/ExpressionTemplates/StringScalarCompareStringGroupColumn.txt +++ ql/src/gen/vectorization/ExpressionTemplates/StringScalarCompareStringGroupColumn.txt @@ -27,6 +27,8 @@ import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; +import com.google.common.base.Preconditions; + /** * This is a generated class to evaluate a comparison on a vector of strings. * Do not edit the generated code directly. diff --git ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnCompareScalar.txt ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnCompareScalar.txt index da33281..f4a72bc 100644 --- ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnCompareScalar.txt +++ ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnCompareScalar.txt @@ -22,6 +22,8 @@ import org.apache.hadoop.hive.ql.exec.vector.TimestampUtils; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; +import com.google.common.base.Preconditions; + /** * Generated from template TimestampColumnCompareScalar.txt, which covers comparison diff --git ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnCompareTimestampScalar.txt ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnCompareTimestampScalar.txt index 46534b4..dd7dedc 100644 --- ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnCompareTimestampScalar.txt +++ ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnCompareTimestampScalar.txt @@ -22,6 +22,8 @@ import org.apache.hadoop.hive.ql.exec.vector.TimestampUtils; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; +import com.google.common.base.Preconditions; + /** * Generated from template TimestampColumnCompareTimestampScalar.txt, which covers comparison diff --git ql/src/gen/vectorization/ExpressionTemplates/TimestampScalarCompareTimestampColumn.txt ql/src/gen/vectorization/ExpressionTemplates/TimestampScalarCompareTimestampColumn.txt index 9468a66..3d5d74b 100644 --- ql/src/gen/vectorization/ExpressionTemplates/TimestampScalarCompareTimestampColumn.txt +++ ql/src/gen/vectorization/ExpressionTemplates/TimestampScalarCompareTimestampColumn.txt @@ -30,6 +30,8 @@ import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; +import com.google.common.base.Preconditions; + /** * Generated from template TimestampScalarCompareTimestampColumn.txt, which covers comparison * expressions between a timestamp column and a timestamp scalar. The boolean output diff --git ql/src/gen/vectorization/ExpressionTemplates/TruncStringScalarCompareStringGroupColumn.txt ql/src/gen/vectorization/ExpressionTemplates/TruncStringScalarCompareStringGroupColumn.txt index 57a0e5d..de8a48d 100644 --- ql/src/gen/vectorization/ExpressionTemplates/TruncStringScalarCompareStringGroupColumn.txt +++ ql/src/gen/vectorization/ExpressionTemplates/TruncStringScalarCompareStringGroupColumn.txt @@ -29,6 +29,8 @@ import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; +import com.google.common.base.Preconditions; + /** * This is a generated class to evaluate a comparison on a vector of strings. * Do not edit the generated code directly. diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapOperator.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapOperator.java index aa0d5a5..c822ca4 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapOperator.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapOperator.java @@ -23,6 +23,8 @@ import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.io.Writable; +import com.google.common.base.Preconditions; + public class VectorMapOperator extends MapOperator { private static final long serialVersionUID = 1L; @@ -37,6 +39,16 @@ public void process(Writable value) throws HiveException { cleanUpInputFileChanged(); } + int firstScratchColumn = conf.getVectorizedRowBatchCtx().getDataColumnCount() + + conf.getVectorizedRowBatchCtx().getPartitionColumnCount(); + ColumnVector[] cols = ((VectorizedRowBatch) value).cols; + for (int i = firstScratchColumn; i < cols.length; i++) { + ColumnVector colVector = cols[i]; + if (colVector != null) { + Preconditions.checkState(colVector.isReset()); + } + } + // The row has been converted to comply with table schema, irrespective of partition schema. // So, use tblOI (and not partOI) for forwarding try { diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java index 7e95244..764f627 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java @@ -373,14 +373,23 @@ private int allocateOutputColumnInternal(String columnType) { } void freeOutputColumn(int index) { + /** + * Don't reuse scratch columns after all -- + * Instead, reset the scratch columns when a new batch is provided by + * input format and let the various VectorExpression classes assume the + * VectorizedRowBatch is reset. + */ + /* if (initialOutputCol < 0) { // This is a test return; } + int colIndex = index-initialOutputCol; if (colIndex >= 0) { usedOutputColumns.remove(index-initialOutputCol); } + */ } public int[] currentScratchColumns() { diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/ConstantVectorExpression.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/ConstantVectorExpression.java index 8d75cf3..c9636a1 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/ConstantVectorExpression.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/ConstantVectorExpression.java @@ -23,6 +23,8 @@ import org.apache.hadoop.hive.common.type.HiveVarchar; import org.apache.hadoop.hive.ql.exec.vector.*; +import com.google.common.base.Preconditions; + /** * Constant is represented as a vector with repeating values. */ @@ -142,6 +144,7 @@ private void evaluateDecimal(VectorizedRowBatch vrg) { @Override public void evaluate(VectorizedRowBatch vrg) { + vrg.cols[outputColumn].reset(); switch (type) { case LONG: evaluateLong(vrg); @@ -156,6 +159,7 @@ public void evaluate(VectorizedRowBatch vrg) { evaluateDecimal(vrg); break; } + Preconditions.checkState(vrg.cols[outputColumn].validateIsNull(outputColumn)); } @Override diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DecimalColumnInList.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DecimalColumnInList.java index 0601c66..a91d23c 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DecimalColumnInList.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DecimalColumnInList.java @@ -25,6 +25,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable; +import com.google.common.base.Preconditions; + import java.util.HashSet; /** @@ -69,6 +71,7 @@ public void evaluate(VectorizedRowBatch batch) { DecimalColumnVector inputColVector = (DecimalColumnVector) batch.cols[inputCol]; LongColumnVector outputColVector = (LongColumnVector) batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] nullPos = inputColVector.isNull; boolean[] outNulls = outputColVector.isNull; diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DoubleColumnInList.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DoubleColumnInList.java index dfc1aff..e654a5e 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DoubleColumnInList.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DoubleColumnInList.java @@ -24,6 +24,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; +import com.google.common.base.Preconditions; + /** * Output a boolean value indicating if a column is IN a list of constants. */ @@ -63,6 +65,7 @@ public void evaluate(VectorizedRowBatch batch) { DoubleColumnVector inputColVector = (DoubleColumnVector) batch.cols[colNum]; LongColumnVector outputColVector = (LongColumnVector) batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] nullPos = inputColVector.isNull; boolean[] outNulls = outputColVector.isNull; diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncRand.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncRand.java index 0b9a82e..7dcd158 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncRand.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncRand.java @@ -24,6 +24,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; +import com.google.common.base.Preconditions; + /** * Implements vectorized rand(seed) function evaluation. */ @@ -49,6 +51,7 @@ public void evaluate(VectorizedRowBatch batch) { } DoubleColumnVector outputColVector = (DoubleColumnVector) batch.cols[outputCol]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; int n = batch.size; double[] outputVector = outputColVector.vector; diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncRandNoSeed.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncRandNoSeed.java index 4453062..c6c7add 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncRandNoSeed.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncRandNoSeed.java @@ -24,6 +24,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; +import com.google.common.base.Preconditions; + /** * Implements vectorized rand() function evaluation. */ @@ -49,6 +51,7 @@ public void evaluate(VectorizedRowBatch batch) { } DoubleColumnVector outputColVector = (DoubleColumnVector) batch.cols[outputCol]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; int n = batch.size; double[] outputVector = outputColVector.vector; diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncRoundWithNumDigitsDecimalToDecimal.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncRoundWithNumDigitsDecimalToDecimal.java index a18bb55..092dcea 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncRoundWithNumDigitsDecimalToDecimal.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncRoundWithNumDigitsDecimalToDecimal.java @@ -25,6 +25,8 @@ import org.apache.hadoop.hive.ql.exec.vector.expressions.DecimalUtil; import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable; +import com.google.common.base.Preconditions; + import java.util.Arrays; @@ -56,6 +58,7 @@ public void evaluate(VectorizedRowBatch batch) { DecimalColumnVector inputColVector = (DecimalColumnVector) batch.cols[colNum]; DecimalColumnVector outputColVector = (DecimalColumnVector) batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] inputIsNull = inputColVector.isNull; boolean[] outputIsNull = outputColVector.isNull; diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprDoubleColumnDoubleColumn.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprDoubleColumnDoubleColumn.java index f0f4f6d..8f25b71 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprDoubleColumnDoubleColumn.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprDoubleColumnDoubleColumn.java @@ -22,6 +22,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; +import com.google.common.base.Preconditions; + /** * Compute IF(expr1, expr2, expr3) for 3 input column expressions. * The first is always a boolean (LongColumnVector). @@ -55,6 +57,7 @@ public void evaluate(VectorizedRowBatch batch) { DoubleColumnVector arg2ColVector = (DoubleColumnVector) batch.cols[arg2Column]; DoubleColumnVector arg3ColVector = (DoubleColumnVector) batch.cols[arg3Column]; DoubleColumnVector outputColVector = (DoubleColumnVector) batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] outputIsNull = outputColVector.isNull; outputColVector.noNulls = arg2ColVector.noNulls && arg3ColVector.noNulls; diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprLongColumnLongColumn.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprLongColumnLongColumn.java index a2bb3d0..1a895c4 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprLongColumnLongColumn.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprLongColumnLongColumn.java @@ -21,6 +21,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; +import com.google.common.base.Preconditions; + /** * Compute IF(expr1, expr2, expr3) for 3 input column expressions. * The first is always a boolean (LongColumnVector). @@ -54,6 +56,7 @@ public void evaluate(VectorizedRowBatch batch) { LongColumnVector arg2ColVector = (LongColumnVector) batch.cols[arg2Column]; LongColumnVector arg3ColVector = (LongColumnVector) batch.cols[arg3Column]; LongColumnVector outputColVector = (LongColumnVector) batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] outputIsNull = outputColVector.isNull; outputColVector.noNulls = arg2ColVector.noNulls && arg3ColVector.noNulls; diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprStringGroupColumnStringGroupColumn.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprStringGroupColumnStringGroupColumn.java index ca11a55..2e5e12d 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprStringGroupColumnStringGroupColumn.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprStringGroupColumnStringGroupColumn.java @@ -24,6 +24,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; +import com.google.common.base.Preconditions; + /** * Compute IF(expr1, expr2, expr3) for 3 input column expressions. * The first is always a boolean (LongColumnVector). @@ -58,6 +60,7 @@ public void evaluate(VectorizedRowBatch batch) { BytesColumnVector arg2ColVector = (BytesColumnVector) batch.cols[arg2Column]; BytesColumnVector arg3ColVector = (BytesColumnVector) batch.cols[arg3Column]; BytesColumnVector outputColVector = (BytesColumnVector) batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] outputIsNull = outputColVector.isNull; outputColVector.noNulls = arg2ColVector.noNulls && arg3ColVector.noNulls; diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprStringGroupColumnStringScalar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprStringGroupColumnStringScalar.java index 4e09448..164d0e5 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprStringGroupColumnStringScalar.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprStringGroupColumnStringScalar.java @@ -24,6 +24,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; +import com.google.common.base.Preconditions; + /** * Compute IF(expr1, expr2, expr3) for 3 input expressions. * The first is always a boolean (LongColumnVector). @@ -59,6 +61,7 @@ public void evaluate(VectorizedRowBatch batch) { LongColumnVector arg1ColVector = (LongColumnVector) batch.cols[arg1Column]; BytesColumnVector arg2ColVector = (BytesColumnVector) batch.cols[arg2Column]; BytesColumnVector outputColVector = (BytesColumnVector) batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] outputIsNull = outputColVector.isNull; outputColVector.noNulls = arg2ColVector.noNulls; diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprStringScalarStringGroupColumn.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprStringScalarStringGroupColumn.java index 79ed71e..0210d3b 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprStringScalarStringGroupColumn.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprStringScalarStringGroupColumn.java @@ -24,6 +24,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; +import com.google.common.base.Preconditions; + /** * Compute IF(expr1, expr2, expr3) for 3 input column expressions. * The first is always a boolean (LongColumnVector). @@ -59,6 +61,7 @@ public void evaluate(VectorizedRowBatch batch) { LongColumnVector arg1ColVector = (LongColumnVector) batch.cols[arg1Column]; BytesColumnVector arg3ColVector = (BytesColumnVector) batch.cols[arg3Column]; BytesColumnVector outputColVector = (BytesColumnVector) batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] outputIsNull = outputColVector.isNull; outputColVector.noNulls = arg3ColVector.noNulls; diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprStringScalarStringScalar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprStringScalarStringScalar.java index 2a35970..1e0bc0b 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprStringScalarStringScalar.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprStringScalarStringScalar.java @@ -24,6 +24,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; +import com.google.common.base.Preconditions; + /** * Compute IF(expr1, expr2, expr3) for 3 input column expressions. * The first is always a boolean (LongColumnVector). @@ -59,6 +61,7 @@ public void evaluate(VectorizedRowBatch batch) { LongColumnVector arg1ColVector = (LongColumnVector) batch.cols[arg1Column]; BytesColumnVector outputColVector = (BytesColumnVector) batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; outputColVector.noNulls = true; // output must be a scalar and neither one is null outputColVector.isRepeating = false; // may override later diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColDivideLongColumn.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColDivideLongColumn.java index 33f50e0..ad00a6e 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColDivideLongColumn.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColDivideLongColumn.java @@ -23,6 +23,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; +import com.google.common.base.Preconditions; + /** * This operation is handled as a special case because Hive * long/long division returns double. This file is thus not generated @@ -55,6 +57,7 @@ public void evaluate(VectorizedRowBatch batch) { LongColumnVector inputColVector1 = (LongColumnVector) batch.cols[colNum1]; LongColumnVector inputColVector2 = (LongColumnVector) batch.cols[colNum2]; DoubleColumnVector outputColVector = (DoubleColumnVector) batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; int n = batch.size; long[] vector1 = inputColVector1.vector; diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColDivideLongScalar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColDivideLongScalar.java index 68b6a87..50b2440 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColDivideLongScalar.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColDivideLongScalar.java @@ -23,6 +23,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; +import com.google.common.base.Preconditions; + /** * This operation is handled as a special case because Hive * long/long division returns double. This file is thus not generated @@ -54,6 +56,7 @@ public void evaluate(VectorizedRowBatch batch) { LongColumnVector inputColVector = (LongColumnVector) batch.cols[colNum]; DoubleColumnVector outputColVector = (DoubleColumnVector) batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] inputIsNull = inputColVector.isNull; boolean[] outputIsNull = outputColVector.isNull; diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColEqualLongColumn.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColEqualLongColumn.java index 9b9f15e..0b2f703 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColEqualLongColumn.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColEqualLongColumn.java @@ -22,6 +22,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; +import com.google.common.base.Preconditions; + public class LongColEqualLongColumn extends VectorExpression { private static final long serialVersionUID = 1L; @@ -49,6 +51,7 @@ public void evaluate(VectorizedRowBatch batch) { LongColumnVector inputColVector1 = (LongColumnVector) batch.cols[colNum1]; LongColumnVector inputColVector2 = (LongColumnVector) batch.cols[colNum2]; LongColumnVector outputColVector = (LongColumnVector) batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; int n = batch.size; long[] vector1 = inputColVector1.vector; diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColEqualLongScalar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColEqualLongScalar.java index caacf3d..0e7e4ce 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColEqualLongScalar.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColEqualLongScalar.java @@ -22,6 +22,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; +import com.google.common.base.Preconditions; + public class LongColEqualLongScalar extends VectorExpression { private static final long serialVersionUID = 1L; @@ -48,6 +50,7 @@ public void evaluate(VectorizedRowBatch batch) { LongColumnVector inputColVector = (LongColumnVector) batch.cols[colNum]; LongColumnVector outputColVector = (LongColumnVector) batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] nullPos = inputColVector.isNull; boolean[] outNulls = outputColVector.isNull; diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColGreaterEqualLongColumn.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColGreaterEqualLongColumn.java index 94c5bed..9222da8 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColGreaterEqualLongColumn.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColGreaterEqualLongColumn.java @@ -22,6 +22,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; +import com.google.common.base.Preconditions; + public class LongColGreaterEqualLongColumn extends VectorExpression { private static final long serialVersionUID = 1L; @@ -49,6 +51,7 @@ public void evaluate(VectorizedRowBatch batch) { LongColumnVector inputColVector1 = (LongColumnVector) batch.cols[colNum1]; LongColumnVector inputColVector2 = (LongColumnVector) batch.cols[colNum2]; LongColumnVector outputColVector = (LongColumnVector) batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; int n = batch.size; long[] vector1 = inputColVector1.vector; diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColGreaterEqualLongScalar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColGreaterEqualLongScalar.java index 433162c..4515a35 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColGreaterEqualLongScalar.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColGreaterEqualLongScalar.java @@ -22,6 +22,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; +import com.google.common.base.Preconditions; + public class LongColGreaterEqualLongScalar extends VectorExpression { private static final long serialVersionUID = 1L; @@ -48,6 +50,7 @@ public void evaluate(VectorizedRowBatch batch) { LongColumnVector inputColVector = (LongColumnVector) batch.cols[colNum]; LongColumnVector outputColVector = (LongColumnVector) batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] nullPos = inputColVector.isNull; boolean[] outNulls = outputColVector.isNull; diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColGreaterLongColumn.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColGreaterLongColumn.java index dda941e..6c2b6c4 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColGreaterLongColumn.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColGreaterLongColumn.java @@ -22,6 +22,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; +import com.google.common.base.Preconditions; + public class LongColGreaterLongColumn extends VectorExpression { private static final long serialVersionUID = 1L; @@ -49,6 +51,7 @@ public void evaluate(VectorizedRowBatch batch) { LongColumnVector inputColVector1 = (LongColumnVector) batch.cols[colNum1]; LongColumnVector inputColVector2 = (LongColumnVector) batch.cols[colNum2]; LongColumnVector outputColVector = (LongColumnVector) batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; int n = batch.size; long[] vector1 = inputColVector1.vector; diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColGreaterLongScalar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColGreaterLongScalar.java index 088b265..f0bf25a 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColGreaterLongScalar.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColGreaterLongScalar.java @@ -22,6 +22,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; +import com.google.common.base.Preconditions; + public class LongColGreaterLongScalar extends VectorExpression { private static final long serialVersionUID = 1L; @@ -48,6 +50,7 @@ public void evaluate(VectorizedRowBatch batch) { LongColumnVector inputColVector = (LongColumnVector) batch.cols[colNum]; LongColumnVector outputColVector = (LongColumnVector) batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] nullPos = inputColVector.isNull; boolean[] outNulls = outputColVector.isNull; diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColLessEqualLongColumn.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColLessEqualLongColumn.java index aacdfe6..589c9f8 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColLessEqualLongColumn.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColLessEqualLongColumn.java @@ -22,6 +22,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; +import com.google.common.base.Preconditions; + public class LongColLessEqualLongColumn extends VectorExpression { private static final long serialVersionUID = 1L; @@ -49,6 +51,7 @@ public void evaluate(VectorizedRowBatch batch) { LongColumnVector inputColVector1 = (LongColumnVector) batch.cols[colNum1]; LongColumnVector inputColVector2 = (LongColumnVector) batch.cols[colNum2]; LongColumnVector outputColVector = (LongColumnVector) batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; int n = batch.size; long[] vector1 = inputColVector1.vector; diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColLessEqualLongScalar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColLessEqualLongScalar.java index 42bd807..33f78f4 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColLessEqualLongScalar.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColLessEqualLongScalar.java @@ -22,6 +22,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; +import com.google.common.base.Preconditions; + public class LongColLessEqualLongScalar extends VectorExpression { private static final long serialVersionUID = 1L; @@ -48,6 +50,7 @@ public void evaluate(VectorizedRowBatch batch) { LongColumnVector inputColVector = (LongColumnVector) batch.cols[colNum]; LongColumnVector outputColVector = (LongColumnVector) batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] nullPos = inputColVector.isNull; boolean[] outNulls = outputColVector.isNull; diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColLessLongColumn.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColLessLongColumn.java index b041ab6..025d11d 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColLessLongColumn.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColLessLongColumn.java @@ -22,6 +22,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; +import com.google.common.base.Preconditions; + public class LongColLessLongColumn extends VectorExpression { private static final long serialVersionUID = 1L; @@ -49,6 +51,7 @@ public void evaluate(VectorizedRowBatch batch) { LongColumnVector inputColVector1 = (LongColumnVector) batch.cols[colNum1]; LongColumnVector inputColVector2 = (LongColumnVector) batch.cols[colNum2]; LongColumnVector outputColVector = (LongColumnVector) batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; int n = batch.size; long[] vector1 = inputColVector1.vector; diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColLessLongScalar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColLessLongScalar.java index 67fb47e..4bce89f 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColLessLongScalar.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColLessLongScalar.java @@ -22,6 +22,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; +import com.google.common.base.Preconditions; + public class LongColLessLongScalar extends VectorExpression { private static final long serialVersionUID = 1L; @@ -48,6 +50,7 @@ public void evaluate(VectorizedRowBatch batch) { LongColumnVector inputColVector = (LongColumnVector) batch.cols[colNum]; LongColumnVector outputColVector = (LongColumnVector) batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] nullPos = inputColVector.isNull; boolean[] outNulls = outputColVector.isNull; diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColNotEqualLongColumn.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColNotEqualLongColumn.java index 179e493..186d17b 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColNotEqualLongColumn.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColNotEqualLongColumn.java @@ -22,6 +22,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; +import com.google.common.base.Preconditions; + public class LongColNotEqualLongColumn extends VectorExpression { private static final long serialVersionUID = 1L; @@ -49,6 +51,7 @@ public void evaluate(VectorizedRowBatch batch) { LongColumnVector inputColVector1 = (LongColumnVector) batch.cols[colNum1]; LongColumnVector inputColVector2 = (LongColumnVector) batch.cols[colNum2]; LongColumnVector outputColVector = (LongColumnVector) batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; int n = batch.size; long[] vector1 = inputColVector1.vector; diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColNotEqualLongScalar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColNotEqualLongScalar.java index 5352186..aa65e8b 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColNotEqualLongScalar.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColNotEqualLongScalar.java @@ -22,6 +22,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; +import com.google.common.base.Preconditions; + public class LongColNotEqualLongScalar extends VectorExpression { private static final long serialVersionUID = 1L; @@ -48,6 +50,7 @@ public void evaluate(VectorizedRowBatch batch) { LongColumnVector inputColVector = (LongColumnVector) batch.cols[colNum]; LongColumnVector outputColVector = (LongColumnVector) batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] nullPos = inputColVector.isNull; boolean[] outNulls = outputColVector.isNull; diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColumnInList.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColumnInList.java index fb15880..4a90048 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColumnInList.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColumnInList.java @@ -23,6 +23,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; +import com.google.common.base.Preconditions; + /** * Output a boolean value indicating if a column is IN a list of constants. */ @@ -62,6 +64,7 @@ public void evaluate(VectorizedRowBatch batch) { LongColumnVector inputColVector = (LongColumnVector) batch.cols[colNum]; LongColumnVector outputColVector = (LongColumnVector) batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] nullPos = inputColVector.isNull; boolean[] outNulls = outputColVector.isNull; diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarDivideLongColumn.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarDivideLongColumn.java index 3c442da..9fa3bfa 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarDivideLongColumn.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarDivideLongColumn.java @@ -23,6 +23,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; +import com.google.common.base.Preconditions; + /** * This operation is handled as a special case because Hive * long/long division returns double. This file is thus not generated @@ -54,6 +56,7 @@ public void evaluate(VectorizedRowBatch batch) { LongColumnVector inputColVector = (LongColumnVector) batch.cols[colNum]; DoubleColumnVector outputColVector = (DoubleColumnVector) batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] inputIsNull = inputColVector.isNull; boolean[] outputIsNull = outputColVector.isNull; diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarEqualLongColumn.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarEqualLongColumn.java index 98fd0e8..fa940e7 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarEqualLongColumn.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarEqualLongColumn.java @@ -22,6 +22,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; +import com.google.common.base.Preconditions; + public class LongScalarEqualLongColumn extends VectorExpression { private static final long serialVersionUID = 1L; @@ -48,6 +50,7 @@ public void evaluate(VectorizedRowBatch batch) { LongColumnVector inputColVector = (LongColumnVector) batch.cols[colNum]; LongColumnVector outputColVector = (LongColumnVector) batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] nullPos = inputColVector.isNull; boolean[] outNulls = outputColVector.isNull; diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarGreaterEqualLongColumn.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarGreaterEqualLongColumn.java index 12a1c7f..ed4f905 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarGreaterEqualLongColumn.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarGreaterEqualLongColumn.java @@ -22,6 +22,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; +import com.google.common.base.Preconditions; + public class LongScalarGreaterEqualLongColumn extends VectorExpression { private static final long serialVersionUID = 1L; @@ -48,6 +50,7 @@ public void evaluate(VectorizedRowBatch batch) { LongColumnVector inputColVector = (LongColumnVector) batch.cols[colNum]; LongColumnVector outputColVector = (LongColumnVector) batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] nullPos = inputColVector.isNull; boolean[] outNulls = outputColVector.isNull; diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarGreaterLongColumn.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarGreaterLongColumn.java index 1fe2ec3..92f7658 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarGreaterLongColumn.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarGreaterLongColumn.java @@ -22,6 +22,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; +import com.google.common.base.Preconditions; + public class LongScalarGreaterLongColumn extends VectorExpression { private static final long serialVersionUID = 1L; @@ -48,6 +50,7 @@ public void evaluate(VectorizedRowBatch batch) { LongColumnVector inputColVector = (LongColumnVector) batch.cols[colNum]; LongColumnVector outputColVector = (LongColumnVector) batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] nullPos = inputColVector.isNull; boolean[] outNulls = outputColVector.isNull; diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarLessEqualLongColumn.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarLessEqualLongColumn.java index af3a4ab..ce97533 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarLessEqualLongColumn.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarLessEqualLongColumn.java @@ -22,6 +22,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; +import com.google.common.base.Preconditions; + public class LongScalarLessEqualLongColumn extends VectorExpression { private static final long serialVersionUID = 1L; @@ -48,6 +50,7 @@ public void evaluate(VectorizedRowBatch batch) { LongColumnVector inputColVector = (LongColumnVector) batch.cols[colNum]; LongColumnVector outputColVector = (LongColumnVector) batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] nullPos = inputColVector.isNull; boolean[] outNulls = outputColVector.isNull; diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarLessLongColumn.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarLessLongColumn.java index 0963367..e403b2e 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarLessLongColumn.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarLessLongColumn.java @@ -22,6 +22,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; +import com.google.common.base.Preconditions; + public class LongScalarLessLongColumn extends VectorExpression { private static final long serialVersionUID = 1L; @@ -48,6 +50,7 @@ public void evaluate(VectorizedRowBatch batch) { LongColumnVector inputColVector = (LongColumnVector) batch.cols[colNum]; LongColumnVector outputColVector = (LongColumnVector) batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] nullPos = inputColVector.isNull; boolean[] outNulls = outputColVector.isNull; diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarNotEqualLongColumn.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarNotEqualLongColumn.java index 33ad3c2..a95f46f 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarNotEqualLongColumn.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarNotEqualLongColumn.java @@ -22,6 +22,8 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor; +import com.google.common.base.Preconditions; + public class LongScalarNotEqualLongColumn extends VectorExpression { private static final long serialVersionUID = 1L; @@ -48,6 +50,7 @@ public void evaluate(VectorizedRowBatch batch) { LongColumnVector inputColVector = (LongColumnVector) batch.cols[colNum]; LongColumnVector outputColVector = (LongColumnVector) batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] nullPos = inputColVector.isNull; boolean[] outNulls = outputColVector.isNull; diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/MathFuncDoubleToDouble.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/MathFuncDoubleToDouble.java index f95c9ec..7f95e1c 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/MathFuncDoubleToDouble.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/MathFuncDoubleToDouble.java @@ -22,6 +22,8 @@ import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; +import com.google.common.base.Preconditions; + /** * Implement vectorized math function that takes a double (and optionally additional * constant argument(s)) and returns long. @@ -57,6 +59,7 @@ public void evaluate(VectorizedRowBatch batch) { DoubleColumnVector inputColVector = (DoubleColumnVector) batch.cols[colNum]; DoubleColumnVector outputColVector = (DoubleColumnVector) batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] inputIsNull = inputColVector.isNull; boolean[] outputIsNull = outputColVector.isNull; diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/MathFuncLongToDouble.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/MathFuncLongToDouble.java index 4b4f38d..c574e01 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/MathFuncLongToDouble.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/MathFuncLongToDouble.java @@ -22,6 +22,8 @@ import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; +import com.google.common.base.Preconditions; + /** * Implement vectorized math function that takes a double (and optionally additional * constant argument(s)) and returns long. @@ -57,6 +59,7 @@ public void evaluate(VectorizedRowBatch batch) { LongColumnVector inputColVector = (LongColumnVector) batch.cols[colNum]; DoubleColumnVector outputColVector = (DoubleColumnVector) batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] inputIsNull = inputColVector.isNull; boolean[] outputIsNull = outputColVector.isNull; diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/MathFuncLongToLong.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/MathFuncLongToLong.java index 4b1f908..24cb752 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/MathFuncLongToLong.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/MathFuncLongToLong.java @@ -22,6 +22,8 @@ import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; +import com.google.common.base.Preconditions; + /** * Implement vectorized math function that takes a long (and optionally additional * constant argument(s)) and returns long. Use this for PMOD() etc. @@ -56,6 +58,7 @@ public void evaluate(VectorizedRowBatch batch) { LongColumnVector inputColVector = (LongColumnVector) batch.cols[colNum]; LongColumnVector outputColVector = (LongColumnVector) batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] inputIsNull = inputColVector.isNull; boolean[] outputIsNull = outputColVector.isNull; diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringColumnInList.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringColumnInList.java index b90e3c0..c2dba43 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringColumnInList.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringColumnInList.java @@ -26,6 +26,8 @@ import org.apache.hadoop.hive.ql.udf.UDFLike; import org.apache.hadoop.io.Text; +import com.google.common.base.Preconditions; + import java.util.Arrays; import java.util.List; import java.util.regex.Matcher; @@ -75,6 +77,7 @@ public void evaluate(VectorizedRowBatch batch) { BytesColumnVector inputColVector = (BytesColumnVector) batch.cols[inputCol]; LongColumnVector outputColVector = (LongColumnVector) batch.cols[outputColumn]; + Preconditions.checkState(outputColVector.isReset()); int[] sel = batch.selected; boolean[] nullPos = inputColVector.isNull; int n = batch.size; diff --git ql/src/java/org/apache/hadoop/hive/ql/io/orc/RecordReaderImpl.java ql/src/java/org/apache/hadoop/hive/ql/io/orc/RecordReaderImpl.java index a85bfef..e667ceb 100644 --- ql/src/java/org/apache/hadoop/hive/ql/io/orc/RecordReaderImpl.java +++ ql/src/java/org/apache/hadoop/hive/ql/io/orc/RecordReaderImpl.java @@ -70,6 +70,8 @@ import org.apache.hadoop.io.Text; import org.apache.orc.OrcProto; +import com.google.common.base.Preconditions; + public class RecordReaderImpl implements RecordReader { static final Logger LOG = LoggerFactory.getLogger(RecordReaderImpl.class); private static final boolean isLogDebugEnabled = LOG.isDebugEnabled(); @@ -1056,12 +1058,37 @@ public VectorizedRowBatch nextBatch(VectorizedRowBatch previous) throws IOExcept result.cols = cols; } else { result = (VectorizedRowBatch) previous; + // Reset batch proper. result.selectedInUse = false; + result.size = 0; + result.endOfFile = false; + + // Reset data columns but not partition columns. + int dataColumnCount = result.getDataColumnCount(); + for (int i = 0; i < dataColumnCount; i++) { + ColumnVector colVector = result.cols[i]; + if (colVector != null) { + colVector.reset(); + } + } + // Reset scratch columns that are after partition columns, if any. + for (int i = dataColumnCount + result.getPartitionColumnCount(); i < result.cols.length; i++) { + ColumnVector colVector = result.cols[i]; + if (colVector != null) { + if (colVector.noNulls) { + Preconditions.checkState(colVector.validateIsNull(i)); + } + colVector.reset(); + } + } + reader.setVectorColumnCount(result.getDataColumnCount()); reader.nextVector(result.cols, (int) batchSize); } result.size = (int) batchSize; + Preconditions.checkState(result.validateIsNull()); + advanceToNextRow(reader, rowInStripe + rowBaseInStripe, true); return result; } catch (IOException e) { diff --git ql/src/java/org/apache/hadoop/hive/ql/io/orc/TreeReaderFactory.java ql/src/java/org/apache/hadoop/hive/ql/io/orc/TreeReaderFactory.java index 3fe28d8..df57952 100644 --- ql/src/java/org/apache/hadoop/hive/ql/io/orc/TreeReaderFactory.java +++ ql/src/java/org/apache/hadoop/hive/ql/io/orc/TreeReaderFactory.java @@ -69,6 +69,8 @@ import org.apache.orc.impl.SerializationUtils; import org.apache.orc.impl.StreamName; +import com.google.common.base.Preconditions; + /** * Factory for creating ORC tree readers. */ @@ -240,23 +242,19 @@ Object next(Object previous) throws IOException { */ public Object nextVector(Object previousVector, long batchSize) throws IOException { ColumnVector result = (ColumnVector) previousVector; + + // Validate the row has been reset. + Preconditions.checkState(result.isReset()); + if (present != null) { // Set noNulls and isNull vector of the ColumnVector based on // present stream - result.noNulls = true; for (int i = 0; i < batchSize; i++) { result.isNull[i] = (present.next() != 1); if (result.noNulls && result.isNull[i]) { result.noNulls = false; } } - } else { - // There is not present stream, this means that all the values are - // present. - result.noNulls = true; - for (int i = 0; i < batchSize; i++) { - result.isNull[i] = false; - } } return previousVector; } diff --git storage-api/src/java/org/apache/hadoop/hive/ql/exec/vector/ColumnVector.java storage-api/src/java/org/apache/hadoop/hive/ql/exec/vector/ColumnVector.java index fcb1ae9..d7a6c9f 100644 --- storage-api/src/java/org/apache/hadoop/hive/ql/exec/vector/ColumnVector.java +++ storage-api/src/java/org/apache/hadoop/hive/ql/exec/vector/ColumnVector.java @@ -21,6 +21,8 @@ import java.io.IOException; import java.util.Arrays; +import com.google.common.base.Preconditions; + /** * ColumnVector contains the shared structure for the sub-types, * including NULL information, and whether this vector @@ -83,6 +85,68 @@ public ColumnVector(int len) { } /** + * Validate the either the isNull array is all false or the noNulls flag is false. + * @param column for error reporting. + * @return is boolean so calls to this method can be done in a Preconditions.checkState + */ + public boolean validateIsNull(int column) { + if (!noNulls) { + return true; + } + int row = findTrueInIsNullArray(); + if (row != -1) { + Preconditions.checkState(false, "column " + column + " noNulls is true and isNull[" + row + "] array entry is true"); + } + return true; + } + + /** + * Validate the either the isNull array is all false or the noNulls flag is false. + * @return is boolean so calls to this method can be done in a Preconditions.checkState + */ + public boolean validateIsNull() { + if (!noNulls) { + return true; + } + int row = findTrueInIsNullArray(); + if (row != -1) { + Preconditions.checkState(false, "noNulls is true and isNull[" + row + "] array entry is true"); + } + return true; + } + + /** + * Determine if the isNull array contains a true flag. + * @return -1 if not true flag was found; otherwise, the row number. + */ + public int findTrueInIsNullArray() { + + // Only call this method when noNulls is true; + Preconditions.checkState(noNulls); + + for (int i = 0; i < isNull.length; i++) { + if (isNull[i]) { + return i; + } + } + return -1; + } + + /** + * Determine if the column is in reset state. + * @return + */ + public boolean isReset() { + if (isRepeating) { + return false; + } + if (!noNulls) { + return false; + } + return findTrueInIsNullArray() == -1; + } + + /** * Resets the column to default state * - fills the isNull array with false * - sets noNulls to true @@ -91,6 +155,8 @@ public ColumnVector(int len) { public void reset() { if (!noNulls) { Arrays.fill(isNull, false); + } else { + Preconditions.checkState(validateIsNull()); } noNulls = true; isRepeating = false; diff --git storage-api/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedRowBatch.java storage-api/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedRowBatch.java index 380300e..8126dc3 100644 --- storage-api/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedRowBatch.java +++ storage-api/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedRowBatch.java @@ -24,6 +24,8 @@ import org.apache.hadoop.io.NullWritable; import org.apache.hadoop.io.Writable; +import com.google.common.base.Preconditions; + /** * A VectorizedRowBatch is a set of rows, organized with each column * as a vector. It is the unit of query execution, organized to minimize @@ -108,6 +110,30 @@ public int getPartitionColumnCount() { return partitionColumnCount; } + public boolean validateIsNull() { + for (int i = 0; i < numCols; i++) { + ColumnVector colVector = cols[i]; + if (colVector != null && colVector.noNulls) { + Preconditions.checkState(colVector.validateIsNull(i)); + } + } + return true; + } + + public int invalidIsNullCol() { + int row; + for (int i = 0; i < numCols; i++) { + ColumnVector colVector = cols[i]; + if (colVector != null && colVector.noNulls) { + row = colVector.findTrueInIsNullArray(); + if (row != -1) { + return i; + } + } + } + return -1; + } + /** * Returns the maximum size of the batch (number of rows it can hold) */ @@ -196,8 +222,15 @@ public void reset() { selectedInUse = false; size = 0; endOfFile = false; - for (ColumnVector vc : cols) { + for (int i = 0; i < cols.length; i++) { + ColumnVector vc = cols[i]; if (vc != null) { + if (vc.noNulls) { + int invalidIsNullRow = vc.findTrueInIsNullArray(); + if (invalidIsNullRow != -1) { + throw new RuntimeException("Column " + i + " noNulls is true and isNull[" + invalidIsNullRow + "] array entry is true"); + } + } vc.reset(); vc.init(); }