You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ha...@apache.org on 2013/09/21 17:29:34 UTC

svn commit: r1525251 - in /hive/branches/vectorization: ./ ant/src/org/apache/hadoop/hive/ant/ ql/ ql/src/gen/vectorization/org/apache/hadoop/hive/ql/exec/vector/gen/ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/gen/ ql/src/...

Author: hashutosh
Date: Sat Sep 21 15:29:31 2013
New Revision: 1525251

URL: http://svn.apache.org/r1525251
Log:
HIVE-5308 : The code generation should be part of the build process. (Jitendra Nath Pandey via Ashutosh Chauhan)

Added:
    hive/branches/vectorization/ant/src/org/apache/hadoop/hive/ant/GenVectorCode.java
    hive/branches/vectorization/ant/src/org/apache/hadoop/hive/ant/GenVectorTestCode.java
Removed:
    hive/branches/vectorization/ql/src/gen/vectorization/org/apache/hadoop/hive/ql/exec/vector/gen/CodeGen.java
    hive/branches/vectorization/ql/src/gen/vectorization/org/apache/hadoop/hive/ql/exec/vector/gen/TestCodeGen.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/gen/VectorUDAFAvgDouble.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/gen/VectorUDAFAvgLong.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/gen/VectorUDAFMaxDouble.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/gen/VectorUDAFMaxLong.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/gen/VectorUDAFMaxString.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/gen/VectorUDAFMinDouble.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/gen/VectorUDAFMinLong.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/gen/VectorUDAFMinString.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/gen/VectorUDAFStdPopDouble.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/gen/VectorUDAFStdPopLong.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/gen/VectorUDAFStdSampDouble.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/gen/VectorUDAFStdSampLong.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/gen/VectorUDAFSumDouble.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/gen/VectorUDAFSumLong.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/gen/VectorUDAFVarPopDouble.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/gen/VectorUDAFVarPopLong.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/gen/VectorUDAFVarSampDouble.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/gen/VectorUDAFVarSampLong.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColAddDoubleColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColAddDoubleScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColAddLongColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColAddLongScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColDivideDoubleColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColDivideDoubleScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColDivideLongColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColDivideLongScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColEqualDoubleScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColGreaterDoubleScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColGreaterEqualDoubleScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColLessDoubleScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColLessEqualDoubleScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColModuloDoubleColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColModuloDoubleScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColModuloLongColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColModuloLongScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColMultiplyDoubleColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColMultiplyDoubleScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColMultiplyLongColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColMultiplyLongScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColNotEqualDoubleScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColSubtractDoubleColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColSubtractDoubleScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColSubtractLongColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColSubtractLongScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColUnaryMinus.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleScalarAddDoubleColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleScalarAddLongColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleScalarDivideDoubleColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleScalarDivideLongColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleScalarModuloDoubleColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleScalarModuloLongColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleScalarMultiplyDoubleColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleScalarMultiplyLongColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleScalarSubtractDoubleColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleScalarSubtractLongColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterDoubleColEqualDoubleColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterDoubleColEqualDoubleScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterDoubleColEqualLongColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterDoubleColEqualLongScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterDoubleColGreaterDoubleColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterDoubleColGreaterDoubleScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterDoubleColGreaterEqualDoubleColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterDoubleColGreaterEqualDoubleScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterDoubleColGreaterEqualLongColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterDoubleColGreaterEqualLongScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterDoubleColGreaterLongColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterDoubleColGreaterLongScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterDoubleColLessDoubleColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterDoubleColLessDoubleScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterDoubleColLessEqualDoubleColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterDoubleColLessEqualDoubleScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterDoubleColLessEqualLongColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterDoubleColLessEqualLongScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterDoubleColLessLongColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterDoubleColLessLongScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterDoubleColNotEqualDoubleColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterDoubleColNotEqualDoubleScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterDoubleColNotEqualLongColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterDoubleColNotEqualLongScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterDoubleScalarEqualDoubleColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterDoubleScalarEqualLongColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterDoubleScalarGreaterDoubleColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterDoubleScalarGreaterEqualDoubleColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterDoubleScalarGreaterEqualLongColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterDoubleScalarGreaterLongColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterDoubleScalarLessDoubleColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterDoubleScalarLessEqualDoubleColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterDoubleScalarLessEqualLongColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterDoubleScalarLessLongColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterDoubleScalarNotEqualDoubleColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterDoubleScalarNotEqualLongColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterLongColEqualDoubleColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterLongColEqualDoubleScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterLongColEqualLongColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterLongColEqualLongScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterLongColGreaterDoubleColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterLongColGreaterDoubleScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterLongColGreaterEqualDoubleColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterLongColGreaterEqualDoubleScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterLongColGreaterEqualLongColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterLongColGreaterEqualLongScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterLongColGreaterLongColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterLongColGreaterLongScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterLongColLessDoubleColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterLongColLessDoubleScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterLongColLessEqualDoubleColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterLongColLessEqualDoubleScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterLongColLessEqualLongColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterLongColLessEqualLongScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterLongColLessLongColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterLongColLessLongScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterLongColNotEqualDoubleColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterLongColNotEqualDoubleScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterLongColNotEqualLongColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterLongColNotEqualLongScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterLongScalarEqualDoubleColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterLongScalarEqualLongColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterLongScalarGreaterDoubleColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterLongScalarGreaterEqualDoubleColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterLongScalarGreaterEqualLongColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterLongScalarGreaterLongColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterLongScalarLessDoubleColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterLongScalarLessEqualDoubleColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterLongScalarLessEqualLongColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterLongScalarLessLongColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterLongScalarNotEqualDoubleColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterLongScalarNotEqualLongColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterStringColEqualStringColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterStringColEqualStringScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterStringColGreaterEqualStringColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterStringColGreaterEqualStringScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterStringColGreaterStringColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterStringColGreaterStringScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterStringColLessEqualStringColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterStringColLessEqualStringScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterStringColLessStringColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterStringColLessStringScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterStringColNotEqualStringColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterStringColNotEqualStringScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterStringScalarEqualStringColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterStringScalarGreaterEqualStringColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterStringScalarGreaterStringColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterStringScalarLessEqualStringColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterStringScalarLessStringColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/FilterStringScalarNotEqualStringColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColAddDoubleColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColAddDoubleScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColAddLongColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColAddLongScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColDivideDoubleColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColDivideDoubleScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColEqualDoubleScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColGreaterDoubleScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColGreaterEqualDoubleScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColLessDoubleScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColLessEqualDoubleScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColModuloDoubleColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColModuloDoubleScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColModuloLongColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColModuloLongScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColMultiplyDoubleColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColMultiplyDoubleScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColMultiplyLongColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColMultiplyLongScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColNotEqualDoubleScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColSubtractDoubleColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColSubtractDoubleScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColSubtractLongColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColSubtractLongScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColUnaryMinus.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongScalarAddDoubleColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongScalarAddLongColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongScalarDivideDoubleColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongScalarModuloDoubleColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongScalarModuloLongColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongScalarMultiplyDoubleColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongScalarMultiplyLongColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongScalarSubtractDoubleColumn.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongScalarSubtractLongColumn.java
    hive/branches/vectorization/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/TestColumnColumnFilterVectorExpressionEvaluation.java
    hive/branches/vectorization/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/TestColumnColumnOperationVectorExpressionEvaluation.java
    hive/branches/vectorization/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/TestColumnScalarFilterVectorExpressionEvaluation.java
    hive/branches/vectorization/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/TestColumnScalarOperationVectorExpressionEvaluation.java
Modified:
    hive/branches/vectorization/build.xml
    hive/branches/vectorization/ql/build.xml
    hive/branches/vectorization/ql/src/test/results/clientpositive/input4.q.out
    hive/branches/vectorization/ql/src/test/results/clientpositive/plan_json.q.out

Added: hive/branches/vectorization/ant/src/org/apache/hadoop/hive/ant/GenVectorCode.java
URL: http://svn.apache.org/viewvc/hive/branches/vectorization/ant/src/org/apache/hadoop/hive/ant/GenVectorCode.java?rev=1525251&view=auto
==============================================================================
--- hive/branches/vectorization/ant/src/org/apache/hadoop/hive/ant/GenVectorCode.java (added)
+++ hive/branches/vectorization/ant/src/org/apache/hadoop/hive/ant/GenVectorCode.java Sat Sep 21 15:29:31 2013
@@ -0,0 +1,797 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hadoop.hive.ant;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
+
+/**
+ * This class generates java classes from the templates.
+ */
+public class GenVectorCode extends Task {
+
+  private static String [][] templateExpansions =
+    {
+      {"ColumnArithmeticScalar", "Add", "long", "long", "+"},
+      {"ColumnArithmeticScalar", "Subtract", "long", "long", "-"},
+      {"ColumnArithmeticScalar", "Multiply", "long", "long", "*"},
+      {"ColumnArithmeticScalar", "Modulo", "long", "long", "%"},
+
+      {"ColumnArithmeticScalar", "Add", "long", "double", "+"},
+      {"ColumnArithmeticScalar", "Subtract", "long", "double", "-"},
+      {"ColumnArithmeticScalar", "Multiply", "long", "double", "*"},
+      {"ColumnArithmeticScalar", "Divide", "long", "double", "/"},
+      {"ColumnArithmeticScalar", "Modulo", "long", "double", "%"},
+
+      {"ColumnArithmeticScalar", "Add", "double", "long", "+"},
+      {"ColumnArithmeticScalar", "Subtract", "double", "long", "-"},
+      {"ColumnArithmeticScalar", "Multiply", "double", "long", "*"},
+      {"ColumnArithmeticScalar", "Divide", "double", "long", "/"},
+      {"ColumnArithmeticScalar", "Modulo", "double", "long", "%"},
+
+      {"ColumnArithmeticScalar", "Add", "double", "double", "+"},
+      {"ColumnArithmeticScalar", "Subtract", "double", "double", "-"},
+      {"ColumnArithmeticScalar", "Multiply", "double", "double", "*"},
+      {"ColumnArithmeticScalar", "Divide", "double", "double", "/"},
+      {"ColumnArithmeticScalar", "Modulo", "double", "double", "%"},
+
+      {"ScalarArithmeticColumn", "Add", "long", "long", "+"},
+      {"ScalarArithmeticColumn", "Subtract", "long", "long", "-"},
+      {"ScalarArithmeticColumn", "Multiply", "long", "long", "*"},
+      {"ScalarArithmeticColumn", "Modulo", "long", "long", "%"},
+
+      {"ScalarArithmeticColumn", "Add", "long", "double", "+"},
+      {"ScalarArithmeticColumn", "Subtract", "long", "double", "-"},
+      {"ScalarArithmeticColumn", "Multiply", "long", "double", "*"},
+      {"ScalarArithmeticColumn", "Divide", "long", "double", "/"},
+      {"ScalarArithmeticColumn", "Modulo", "long", "double", "%"},
+
+      {"ScalarArithmeticColumn", "Add", "double", "long", "+"},
+      {"ScalarArithmeticColumn", "Subtract", "double", "long", "-"},
+      {"ScalarArithmeticColumn", "Multiply", "double", "long", "*"},
+      {"ScalarArithmeticColumn", "Divide", "double", "long", "/"},
+      {"ScalarArithmeticColumn", "Modulo", "double", "long", "%"},
+
+      {"ScalarArithmeticColumn", "Add", "double", "double", "+"},
+      {"ScalarArithmeticColumn", "Subtract", "double", "double", "-"},
+      {"ScalarArithmeticColumn", "Multiply", "double", "double", "*"},
+      {"ScalarArithmeticColumn", "Divide", "double", "double", "/"},
+      {"ScalarArithmeticColumn", "Modulo", "double", "double", "%"},
+
+      {"ColumnArithmeticColumn", "Add", "long", "long", "+"},
+      {"ColumnArithmeticColumn", "Subtract", "long", "long", "-"},
+      {"ColumnArithmeticColumn", "Multiply", "long", "long", "*"},
+      {"ColumnArithmeticColumn", "Modulo", "long", "long", "%"},
+
+      {"ColumnArithmeticColumn", "Add", "long", "double", "+"},
+      {"ColumnArithmeticColumn", "Subtract", "long", "double", "-"},
+      {"ColumnArithmeticColumn", "Multiply", "long", "double", "*"},
+      {"ColumnArithmeticColumn", "Divide", "long", "double", "/"},
+      {"ColumnArithmeticColumn", "Modulo", "long", "double", "%"},
+
+      {"ColumnArithmeticColumn", "Add", "double", "long", "+"},
+      {"ColumnArithmeticColumn", "Subtract", "double", "long", "-"},
+      {"ColumnArithmeticColumn", "Multiply", "double", "long", "*"},
+      {"ColumnArithmeticColumn", "Divide", "double", "long", "/"},
+      {"ColumnArithmeticColumn", "Modulo", "double", "long", "%"},
+
+      {"ColumnArithmeticColumn", "Add", "double", "double", "+"},
+      {"ColumnArithmeticColumn", "Subtract", "double", "double", "-"},
+      {"ColumnArithmeticColumn", "Multiply", "double", "double", "*"},
+      {"ColumnArithmeticColumn", "Divide", "double", "double", "/"},
+      {"ColumnArithmeticColumn", "Modulo", "double", "double", "%"},
+
+      {"ColumnCompareScalar", "Equal", "long", "double", "=="},
+      {"ColumnCompareScalar", "Equal", "double", "double", "=="},
+      {"ColumnCompareScalar", "NotEqual", "long", "double", "!="},
+      {"ColumnCompareScalar", "NotEqual", "double", "double", "!="},
+      {"ColumnCompareScalar", "Less", "long", "double", "<"},
+      {"ColumnCompareScalar", "Less", "double", "double", "<"},
+      {"ColumnCompareScalar", "LessEqual", "long", "double", "<="},
+      {"ColumnCompareScalar", "LessEqual", "double", "double", "<="},
+      {"ColumnCompareScalar", "Greater", "long", "double", ">"},
+      {"ColumnCompareScalar", "Greater", "double", "double", ">"},
+      {"ColumnCompareScalar", "GreaterEqual", "long", "double", ">="},
+      {"ColumnCompareScalar", "GreaterEqual", "double", "double", ">="},
+
+      {"FilterColumnCompareScalar", "Equal", "long", "double", "=="},
+      {"FilterColumnCompareScalar", "Equal", "double", "double", "=="},
+      {"FilterColumnCompareScalar", "NotEqual", "long", "double", "!="},
+      {"FilterColumnCompareScalar", "NotEqual", "double", "double", "!="},
+      {"FilterColumnCompareScalar", "Less", "long", "double", "<"},
+      {"FilterColumnCompareScalar", "Less", "double", "double", "<"},
+      {"FilterColumnCompareScalar", "LessEqual", "long", "double", "<="},
+      {"FilterColumnCompareScalar", "LessEqual", "double", "double", "<="},
+      {"FilterColumnCompareScalar", "Greater", "long", "double", ">"},
+      {"FilterColumnCompareScalar", "Greater", "double", "double", ">"},
+      {"FilterColumnCompareScalar", "GreaterEqual", "long", "double", ">="},
+      {"FilterColumnCompareScalar", "GreaterEqual", "double", "double", ">="},
+
+      {"FilterColumnCompareScalar", "Equal", "long", "long", "=="},
+      {"FilterColumnCompareScalar", "Equal", "double", "long", "=="},
+      {"FilterColumnCompareScalar", "NotEqual", "long", "long", "!="},
+      {"FilterColumnCompareScalar", "NotEqual", "double", "long", "!="},
+      {"FilterColumnCompareScalar", "Less", "long", "long", "<"},
+      {"FilterColumnCompareScalar", "Less", "double", "long", "<"},
+      {"FilterColumnCompareScalar", "LessEqual", "long", "long", "<="},
+      {"FilterColumnCompareScalar", "LessEqual", "double", "long", "<="},
+      {"FilterColumnCompareScalar", "Greater", "long", "long", ">"},
+      {"FilterColumnCompareScalar", "Greater", "double", "long", ">"},
+      {"FilterColumnCompareScalar", "GreaterEqual", "long", "long", ">="},
+      {"FilterColumnCompareScalar", "GreaterEqual", "double", "long", ">="},
+
+      {"FilterScalarCompareColumn", "Equal", "long", "double", "=="},
+      {"FilterScalarCompareColumn", "Equal", "double", "double", "=="},
+      {"FilterScalarCompareColumn", "NotEqual", "long", "double", "!="},
+      {"FilterScalarCompareColumn", "NotEqual", "double", "double", "!="},
+      {"FilterScalarCompareColumn", "Less", "long", "double", "<"},
+      {"FilterScalarCompareColumn", "Less", "double", "double", "<"},
+      {"FilterScalarCompareColumn", "LessEqual", "long", "double", "<="},
+      {"FilterScalarCompareColumn", "LessEqual", "double", "double", "<="},
+      {"FilterScalarCompareColumn", "Greater", "long", "double", ">"},
+      {"FilterScalarCompareColumn", "Greater", "double", "double", ">"},
+      {"FilterScalarCompareColumn", "GreaterEqual", "long", "double", ">="},
+      {"FilterScalarCompareColumn", "GreaterEqual", "double", "double", ">="},
+
+      {"FilterScalarCompareColumn", "Equal", "long", "long", "=="},
+      {"FilterScalarCompareColumn", "Equal", "double", "long", "=="},
+      {"FilterScalarCompareColumn", "NotEqual", "long", "long", "!="},
+      {"FilterScalarCompareColumn", "NotEqual", "double", "long", "!="},
+      {"FilterScalarCompareColumn", "Less", "long", "long", "<"},
+      {"FilterScalarCompareColumn", "Less", "double", "long", "<"},
+      {"FilterScalarCompareColumn", "LessEqual", "long", "long", "<="},
+      {"FilterScalarCompareColumn", "LessEqual", "double", "long", "<="},
+      {"FilterScalarCompareColumn", "Greater", "long", "long", ">"},
+      {"FilterScalarCompareColumn", "Greater", "double", "long", ">"},
+      {"FilterScalarCompareColumn", "GreaterEqual", "long", "long", ">="},
+      {"FilterScalarCompareColumn", "GreaterEqual", "double", "long", ">="},
+
+      {"FilterStringColumnCompareScalar", "Equal", "=="},
+      {"FilterStringColumnCompareScalar", "NotEqual", "!="},
+      {"FilterStringColumnCompareScalar", "Less", "<"},
+      {"FilterStringColumnCompareScalar", "LessEqual", "<="},
+      {"FilterStringColumnCompareScalar", "Greater", ">"},
+      {"FilterStringColumnCompareScalar", "GreaterEqual", ">="},
+
+      {"FilterStringScalarCompareColumn", "Equal", "=="},
+      {"FilterStringScalarCompareColumn", "NotEqual", "!="},
+      {"FilterStringScalarCompareColumn", "Less", "<"},
+      {"FilterStringScalarCompareColumn", "LessEqual", "<="},
+      {"FilterStringScalarCompareColumn", "Greater", ">"},
+      {"FilterStringScalarCompareColumn", "GreaterEqual", ">="},
+
+      {"FilterStringColumnCompareColumn", "Equal", "=="},
+      {"FilterStringColumnCompareColumn", "NotEqual", "!="},
+      {"FilterStringColumnCompareColumn", "Less", "<"},
+      {"FilterStringColumnCompareColumn", "LessEqual", "<="},
+      {"FilterStringColumnCompareColumn", "Greater", ">"},
+      {"FilterStringColumnCompareColumn", "GreaterEqual", ">="},
+
+      {"FilterColumnCompareColumn", "Equal", "long", "double", "=="},
+      {"FilterColumnCompareColumn", "Equal", "double", "double", "=="},
+      {"FilterColumnCompareColumn", "NotEqual", "long", "double", "!="},
+      {"FilterColumnCompareColumn", "NotEqual", "double", "double", "!="},
+      {"FilterColumnCompareColumn", "Less", "long", "double", "<"},
+      {"FilterColumnCompareColumn", "Less", "double", "double", "<"},
+      {"FilterColumnCompareColumn", "LessEqual", "long", "double", "<="},
+      {"FilterColumnCompareColumn", "LessEqual", "double", "double", "<="},
+      {"FilterColumnCompareColumn", "Greater", "long", "double", ">"},
+      {"FilterColumnCompareColumn", "Greater", "double", "double", ">"},
+      {"FilterColumnCompareColumn", "GreaterEqual", "long", "double", ">="},
+      {"FilterColumnCompareColumn", "GreaterEqual", "double", "double", ">="},
+
+        {"FilterColumnCompareColumn", "Equal", "long", "long", "=="},
+        {"FilterColumnCompareColumn", "Equal", "double", "long", "=="},
+        {"FilterColumnCompareColumn", "NotEqual", "long", "long", "!="},
+        {"FilterColumnCompareColumn", "NotEqual", "double", "long", "!="},
+        {"FilterColumnCompareColumn", "Less", "long", "long", "<"},
+        {"FilterColumnCompareColumn", "Less", "double", "long", "<"},
+        {"FilterColumnCompareColumn", "LessEqual", "long", "long", "<="},
+        {"FilterColumnCompareColumn", "LessEqual", "double", "long", "<="},
+        {"FilterColumnCompareColumn", "Greater", "long", "long", ">"},
+        {"FilterColumnCompareColumn", "Greater", "double", "long", ">"},
+        {"FilterColumnCompareColumn", "GreaterEqual", "long", "long", ">="},
+        {"FilterColumnCompareColumn", "GreaterEqual", "double", "long", ">="},
+
+        {"ColumnUnaryMinus", "long"},
+        {"ColumnUnaryMinus", "double"},
+
+      // template, <ClassName>, <ValueType>, <OperatorSymbol>, <DescriptionName>, <DescriptionValue>
+      {"VectorUDAFMinMax", "VectorUDAFMinLong", "long", "<", "min",
+          "_FUNC_(expr) - Returns the minimum value of expr (vectorized, type: long)"},
+      {"VectorUDAFMinMax", "VectorUDAFMinDouble", "double", "<", "min",
+          "_FUNC_(expr) - Returns the minimum value of expr (vectorized, type: double)"},
+      {"VectorUDAFMinMax", "VectorUDAFMaxLong", "long", ">", "max",
+          "_FUNC_(expr) - Returns the maximum value of expr (vectorized, type: long)"},
+      {"VectorUDAFMinMax", "VectorUDAFMaxDouble", "double", ">", "max",
+          "_FUNC_(expr) - Returns the maximum value of expr (vectorized, type: double)"},
+
+      {"VectorUDAFMinMaxString", "VectorUDAFMinString", "<", "min",
+          "_FUNC_(expr) - Returns the minimum value of expr (vectorized, type: string)"},
+      {"VectorUDAFMinMaxString", "VectorUDAFMaxString", ">", "max",
+          "_FUNC_(expr) - Returns the minimum value of expr (vectorized, type: string)"},
+
+        //template, <ClassName>, <ValueType>
+        {"VectorUDAFSum", "VectorUDAFSumLong", "long"},
+        {"VectorUDAFSum", "VectorUDAFSumDouble", "double"},
+        {"VectorUDAFAvg", "VectorUDAFAvgLong", "long"},
+        {"VectorUDAFAvg", "VectorUDAFAvgDouble", "double"},
+
+      // template, <ClassName>, <ValueType>, <VarianceFormula>, <DescriptionName>,
+      // <DescriptionValue>
+      {"VectorUDAFVar", "VectorUDAFVarPopLong", "long", "myagg.variance / myagg.count",
+          "variance, var_pop",
+          "_FUNC_(x) - Returns the variance of a set of numbers (vectorized, long)"},
+      {"VectorUDAFVar", "VectorUDAFVarPopDouble", "double", "myagg.variance / myagg.count",
+          "variance, var_pop",
+          "_FUNC_(x) - Returns the variance of a set of numbers (vectorized, double)"},
+      {"VectorUDAFVar", "VectorUDAFVarSampLong", "long", "myagg.variance / (myagg.count-1.0)",
+          "var_samp",
+          "_FUNC_(x) - Returns the sample variance of a set of numbers (vectorized, long)"},
+      {"VectorUDAFVar", "VectorUDAFVarSampDouble", "double", "myagg.variance / (myagg.count-1.0)",
+          "var_samp",
+          "_FUNC_(x) - Returns the sample variance of a set of numbers (vectorized, double)"},
+      {"VectorUDAFVar", "VectorUDAFStdPopLong", "long",
+          "Math.sqrt(myagg.variance / (myagg.count))", "std,stddev,stddev_pop",
+          "_FUNC_(x) - Returns the standard deviation of a set of numbers (vectorized, long)"},
+      {"VectorUDAFVar", "VectorUDAFStdPopDouble", "double",
+          "Math.sqrt(myagg.variance / (myagg.count))", "std,stddev,stddev_pop",
+          "_FUNC_(x) - Returns the standard deviation of a set of numbers (vectorized, double)"},
+      {"VectorUDAFVar", "VectorUDAFStdSampLong", "long",
+          "Math.sqrt(myagg.variance / (myagg.count-1.0))", "stddev_samp",
+          "_FUNC_(x) - Returns the sample standard deviation of a set of numbers (vectorized, long)"},
+      {"VectorUDAFVar", "VectorUDAFStdSampDouble", "double",
+          "Math.sqrt(myagg.variance / (myagg.count-1.0))", "stddev_samp",
+          "_FUNC_(x) - Returns the sample standard deviation of a set of numbers (vectorized, double)"},
+
+    };
+
+
+  private String templateBaseDir;
+  private String buildDir;
+
+  private String expressionOutputDirectory;
+  private String expressionTemplateDirectory;
+  private String udafOutputDirectory;
+  private String udafTemplateDirectory;
+  private GenVectorTestCode testCodeGen;
+
+  static String joinPath(String...parts) {
+    String path = parts[0];
+    for (int i=1; i < parts.length; ++i) {
+      path += File.separatorChar + parts[i];
+    }
+    return path;
+  }
+
+  public void init(String templateBaseDir, String buildDir) {
+    File generationDirectory = new File(templateBaseDir);
+
+    String buildPath = joinPath(buildDir, "ql", "gen", "vector");
+
+    File exprOutput = new File(joinPath(buildPath, "org", "apache", "hadoop",
+        "hive", "ql", "exec", "vector", "expressions", "gen"));
+    expressionOutputDirectory = exprOutput.getAbsolutePath();
+
+    expressionTemplateDirectory =
+        joinPath(generationDirectory.getAbsolutePath(), "ExpressionTemplates");
+
+    File udafOutput = new File(joinPath(buildPath, "org", "apache", "hadoop",
+        "hive", "ql", "exec", "vector", "expressions", "aggregates", "gen"));
+    udafOutputDirectory = udafOutput.getAbsolutePath();
+
+    udafTemplateDirectory =
+        joinPath(generationDirectory.getAbsolutePath(), "UDAFTemplates");
+
+    File testCodeOutput =
+        new File(
+            joinPath(buildDir, "ql", "test", "src", "org",
+                "apache", "hadoop", "hive", "ql", "exec", "vector",
+                "expressions", "gen"));
+    testCodeGen = new GenVectorTestCode(testCodeOutput.getAbsolutePath(),
+        joinPath(generationDirectory.getAbsolutePath(), "TestTemplates"));
+  }
+
+  /**
+   * @param args
+   * @throws Exception
+   */
+  public static void main(String[] args) throws Exception {
+    GenVectorCode gen = new GenVectorCode();
+    gen.init(System.getProperty("user.dir"),
+        joinPath(System.getProperty("user.dir"), "..", "..", "..", "..", "build"));
+    gen.generate();
+  }
+
+  @Override
+  public void execute() throws BuildException {
+    init(templateBaseDir, buildDir);
+    try {
+      this.generate();
+    } catch (Exception e) {
+      new BuildException(e);
+    }
+  }
+
+  private void generate() throws Exception {
+    System.out.println("Generating vector expression code");
+    for (String [] tdesc : templateExpansions) {
+      if (tdesc[0].equals("ColumnArithmeticScalar")) {
+        generateColumnArithmeticScalar(tdesc);
+      } else if (tdesc[0].equals("ColumnCompareScalar")) {
+        generateColumnCompareScalar(tdesc);
+      } else if (tdesc[0].equals("FilterColumnCompareScalar")) {
+        generateFilterColumnCompareScalar(tdesc);
+      } else if (tdesc[0].equals("FilterScalarCompareColumn")) {
+        generateFilterScalarCompareColumn(tdesc);
+      } else if (tdesc[0].equals("ScalarArithmeticColumn")) {
+        generateScalarArithmeticColumn(tdesc);
+      } else if (tdesc[0].equals("FilterColumnCompareColumn")) {
+        generateFilterColumnCompareColumn(tdesc);
+      } else if (tdesc[0].equals("ColumnArithmeticColumn")) {
+        generateColumnArithmeticColumn(tdesc);
+      } else if (tdesc[0].equals("ColumnUnaryMinus")) {
+        generateColumnUnaryMinus(tdesc);
+      } else if (tdesc[0].equals("VectorUDAFMinMax")) {
+        generateVectorUDAFMinMax(tdesc);
+      } else if (tdesc[0].equals("VectorUDAFMinMaxString")) {
+        generateVectorUDAFMinMaxString(tdesc);
+      } else if (tdesc[0].equals("VectorUDAFSum")) {
+        generateVectorUDAFSum(tdesc);
+      } else if (tdesc[0].equals("VectorUDAFAvg")) {
+        generateVectorUDAFAvg(tdesc);
+      } else if (tdesc[0].equals("VectorUDAFVar")) {
+        generateVectorUDAFVar(tdesc);
+      } else if (tdesc[0].equals("FilterStringColumnCompareScalar")) {
+        generateFilterStringColumnCompareScalar(tdesc);
+      } else if (tdesc[0].equals("FilterStringScalarCompareColumn")) {
+        generateFilterStringScalarCompareColumn(tdesc);
+      } else if (tdesc[0].equals("FilterStringColumnCompareColumn")) {
+        generateFilterStringColumnCompareColumn(tdesc);
+      } else {
+        continue;
+      }
+    }
+    System.out.println("Generating vector expression test code");
+    testCodeGen.generateTestSuites();
+  }
+
+  private void generateVectorUDAFMinMax(String[] tdesc) throws Exception {
+    String className = tdesc[1];
+    String valueType = tdesc[2];
+    String operatorSymbol = tdesc[3];
+    String descName = tdesc[4];
+    String descValue = tdesc[5];
+    String columnType = getColumnVectorType(valueType);
+    String writableType = getOutputWritableType(valueType);
+    String inspectorType = getOutputObjectInspector(valueType);
+
+    String outputFile = joinPath(this.udafOutputDirectory, className + ".java");
+    String templateFile = joinPath(this.udafTemplateDirectory, tdesc[0] + ".txt");
+
+    String templateString = readFile(templateFile);
+    templateString = templateString.replaceAll("<ClassName>", className);
+    templateString = templateString.replaceAll("<ValueType>", valueType);
+    templateString = templateString.replaceAll("<OperatorSymbol>", operatorSymbol);
+    templateString = templateString.replaceAll("<InputColumnVectorType>", columnType);
+    templateString = templateString.replaceAll("<DescriptionName>", descName);
+    templateString = templateString.replaceAll("<DescriptionValue>", descValue);
+    templateString = templateString.replaceAll("<OutputType>", writableType);
+    templateString = templateString.replaceAll("<OutputTypeInspector>", inspectorType);
+    writeFile(outputFile, templateString);
+
+  }
+
+  private void generateVectorUDAFMinMaxString(String[] tdesc) throws Exception {
+    String className = tdesc[1];
+    String operatorSymbol = tdesc[2];
+    String descName = tdesc[3];
+    String descValue = tdesc[4];
+
+    String outputFile = joinPath(this.udafOutputDirectory, className + ".java");
+    String templateFile = joinPath(this.udafTemplateDirectory, tdesc[0] + ".txt");
+
+    String templateString = readFile(templateFile);
+    templateString = templateString.replaceAll("<ClassName>", className);
+    templateString = templateString.replaceAll("<OperatorSymbol>", operatorSymbol);
+    templateString = templateString.replaceAll("<DescriptionName>", descName);
+    templateString = templateString.replaceAll("<DescriptionValue>", descValue);
+    writeFile(outputFile, templateString);
+
+  }
+
+  private void generateVectorUDAFSum(String[] tdesc) throws Exception {
+  //template, <ClassName>, <ValueType>, <OutputType>, <OutputTypeInspector>
+    String className = tdesc[1];
+    String valueType = tdesc[2];
+    String columnType = getColumnVectorType(valueType);
+    String writableType = getOutputWritableType(valueType);
+    String inspectorType = getOutputObjectInspector(valueType);
+
+    String outputFile = joinPath(this.udafOutputDirectory, className + ".java");
+    String templateFile = joinPath(this.udafTemplateDirectory, tdesc[0] + ".txt");
+
+    String templateString = readFile(templateFile);
+    templateString = templateString.replaceAll("<ClassName>", className);
+    templateString = templateString.replaceAll("<ValueType>", valueType);
+    templateString = templateString.replaceAll("<InputColumnVectorType>", columnType);
+    templateString = templateString.replaceAll("<OutputType>", writableType);
+    templateString = templateString.replaceAll("<OutputTypeInspector>", inspectorType);
+    writeFile(outputFile, templateString);
+  }
+
+  private void generateVectorUDAFAvg(String[] tdesc) throws IOException {
+    String className = tdesc[1];
+    String valueType = tdesc[2];
+    String columnType = getColumnVectorType(valueType);
+
+    String outputFile = joinPath(this.udafOutputDirectory, className + ".java");
+    String templateFile = joinPath(this.udafTemplateDirectory, tdesc[0] + ".txt");
+
+    String templateString = readFile(templateFile);
+    templateString = templateString.replaceAll("<ClassName>", className);
+    templateString = templateString.replaceAll("<ValueType>", valueType);
+    templateString = templateString.replaceAll("<InputColumnVectorType>", columnType);
+    writeFile(outputFile, templateString);
+  }
+
+  private void generateVectorUDAFVar(String[] tdesc) throws IOException {
+    String className = tdesc[1];
+    String valueType = tdesc[2];
+    String varianceFormula = tdesc[3];
+    String descriptionName = tdesc[4];
+    String descriptionValue = tdesc[5];
+    String columnType = getColumnVectorType(valueType);
+
+    String outputFile = joinPath(this.udafOutputDirectory, className + ".java");
+    String templateFile = joinPath(this.udafTemplateDirectory, tdesc[0] + ".txt");
+
+    String templateString = readFile(templateFile);
+    templateString = templateString.replaceAll("<ClassName>", className);
+    templateString = templateString.replaceAll("<ValueType>", valueType);
+    templateString = templateString.replaceAll("<InputColumnVectorType>", columnType);
+    templateString = templateString.replaceAll("<VarianceFormula>", varianceFormula);
+    templateString = templateString.replaceAll("<DescriptionName>", descriptionName);
+    templateString = templateString.replaceAll("<DescriptionValue>", descriptionValue);
+    writeFile(outputFile, templateString);
+  }
+
+  private void generateFilterStringScalarCompareColumn(String[] tdesc) throws IOException {
+    String operatorName = tdesc[1];
+    String className = "FilterStringScalar" + operatorName + "StringColumn";
+
+    // Template expansion logic is the same for both column-scalar and scalar-column cases.
+    generateFilterStringColumnCompareScalar(tdesc, className);
+  }
+
+  private void generateFilterStringColumnCompareScalar(String[] tdesc) throws IOException {
+    String operatorName = tdesc[1];
+    String className = "FilterStringCol" + operatorName + "StringScalar";
+    generateFilterStringColumnCompareScalar(tdesc, className);
+  }
+
+  private void generateFilterStringColumnCompareColumn(String[] tdesc) throws IOException {
+    String operatorName = tdesc[1];
+    String className = "FilterStringCol" + operatorName + "StringColumn";
+    generateFilterStringColumnCompareScalar(tdesc, className);
+  }
+
+  private void generateFilterStringColumnCompareScalar(String[] tdesc, String className)
+      throws IOException {
+   String operatorSymbol = tdesc[2];
+   String outputFile = joinPath(this.expressionOutputDirectory, className + ".java");
+   // Read the template into a string;
+   String templateFile = joinPath(this.expressionTemplateDirectory, tdesc[0] + ".txt");
+   String templateString = readFile(templateFile);
+   // Expand, and write result
+   templateString = templateString.replaceAll("<ClassName>", className);
+   templateString = templateString.replaceAll("<OperatorSymbol>", operatorSymbol);
+   writeFile(outputFile, templateString);
+  }
+
+  private void generateFilterColumnCompareColumn(String[] tdesc) throws IOException {
+    //The variables are all same as ColumnCompareScalar except that
+    //this template doesn't need a return type. Pass anything as return type.
+    String operatorName = tdesc[1];
+    String operandType1 = tdesc[2];
+    String operandType2 = tdesc[3];
+    String className = "Filter" + getCamelCaseType(operandType1)
+        + "Col" + operatorName + getCamelCaseType(operandType2) + "Column";
+    generateColumnBinaryOperatorColumn(tdesc, null, className);
+  }
+
+  private void generateColumnUnaryMinus(String[] tdesc) throws IOException {
+    String operandType = tdesc[1];
+    String inputColumnVectorType = this.getColumnVectorType(operandType);
+    String outputColumnVectorType = inputColumnVectorType;
+    String returnType = operandType;
+    String className = getCamelCaseType(operandType) + "ColUnaryMinus";
+    String outputFile = joinPath(this.expressionOutputDirectory, className + ".java");
+    String templateFile = joinPath(this.expressionTemplateDirectory, tdesc[0] + ".txt");
+    String templateString = readFile(templateFile);
+    // Expand, and write result
+    templateString = templateString.replaceAll("<ClassName>", className);
+    templateString = templateString.replaceAll("<InputColumnVectorType>", inputColumnVectorType);
+    templateString = templateString.replaceAll("<OutputColumnVectorType>", outputColumnVectorType);
+    templateString = templateString.replaceAll("<OperandType>", operandType);
+    templateString = templateString.replaceAll("<ReturnType>", returnType);
+    writeFile(outputFile, templateString);
+  }
+
+  private void generateColumnArithmeticColumn(String [] tdesc) throws IOException {
+    String operatorName = tdesc[1];
+    String operandType1 = tdesc[2];
+    String operandType2 = tdesc[3];
+    String className = getCamelCaseType(operandType1)
+        + "Col" + operatorName + getCamelCaseType(operandType2) + "Column";
+    String returnType = getArithmeticReturnType(operandType1, operandType2);
+    generateColumnBinaryOperatorColumn(tdesc, returnType, className);
+  }
+
+  private void generateFilterColumnCompareScalar(String[] tdesc) throws IOException {
+    //The variables are all same as ColumnCompareScalar except that
+    //this template doesn't need a return type. Pass anything as return type.
+    String operatorName = tdesc[1];
+    String operandType1 = tdesc[2];
+    String operandType2 = tdesc[3];
+    String className = "Filter" + getCamelCaseType(operandType1)
+        + "Col" + operatorName + getCamelCaseType(operandType2) + "Scalar";
+    generateColumnBinaryOperatorScalar(tdesc, null, className);
+  }
+
+  private void generateFilterScalarCompareColumn(String[] tdesc) throws IOException {
+    //this template doesn't need a return type. Pass anything as return type.
+    String operatorName = tdesc[1];
+    String operandType1 = tdesc[2];
+    String operandType2 = tdesc[3];
+    String className = "Filter" + getCamelCaseType(operandType1)
+        + "Scalar" + operatorName + getCamelCaseType(operandType2) + "Column";
+    generateScalarBinaryOperatorColumn(tdesc, null, className);
+  }
+
+  private void generateColumnCompareScalar(String[] tdesc) throws IOException {
+    String operatorName = tdesc[1];
+    String operandType1 = tdesc[2];
+    String operandType2 = tdesc[3];
+    String returnType = "long";
+    String className = getCamelCaseType(operandType1)
+        + "Col" + operatorName + getCamelCaseType(operandType2) + "Scalar";
+    generateColumnBinaryOperatorScalar(tdesc, returnType, className);
+  }
+
+  private void generateColumnBinaryOperatorColumn(String[] tdesc, String returnType,
+         String className) throws IOException {
+    String operandType1 = tdesc[2];
+    String operandType2 = tdesc[3];
+    String outputColumnVectorType = this.getColumnVectorType(returnType);
+    String inputColumnVectorType1 = this.getColumnVectorType(operandType1);
+    String inputColumnVectorType2 = this.getColumnVectorType(operandType2);
+    String operatorSymbol = tdesc[4];
+    String outputFile = joinPath(this.expressionOutputDirectory, className + ".java");
+
+    //Read the template into a string;
+    String templateFile = joinPath(this.expressionTemplateDirectory, tdesc[0] + ".txt");
+    String templateString = readFile(templateFile);
+    templateString = templateString.replaceAll("<ClassName>", className);
+    templateString = templateString.replaceAll("<InputColumnVectorType1>", inputColumnVectorType1);
+    templateString = templateString.replaceAll("<InputColumnVectorType2>", inputColumnVectorType2);
+    templateString = templateString.replaceAll("<OutputColumnVectorType>", outputColumnVectorType);
+    templateString = templateString.replaceAll("<OperatorSymbol>", operatorSymbol);
+    templateString = templateString.replaceAll("<OperandType1>", operandType1);
+    templateString = templateString.replaceAll("<OperandType2>", operandType2);
+    templateString = templateString.replaceAll("<ReturnType>", returnType);
+    templateString = templateString.replaceAll("<CamelReturnType>", getCamelCaseType(returnType));
+    writeFile(outputFile, templateString);
+
+    if(returnType==null){
+      testCodeGen.addColumnColumnFilterTestCases(
+          className,
+          inputColumnVectorType1,
+          inputColumnVectorType2,
+          operatorSymbol);
+    }else{
+      testCodeGen.addColumnColumnOperationTestCases(
+          className,
+          inputColumnVectorType1,
+          inputColumnVectorType2,
+          outputColumnVectorType);
+    }
+  }
+
+  private void generateColumnBinaryOperatorScalar(String[] tdesc, String returnType,
+     String className) throws IOException {
+    String operandType1 = tdesc[2];
+    String operandType2 = tdesc[3];
+    String outputColumnVectorType = this.getColumnVectorType(returnType);
+    String inputColumnVectorType = this.getColumnVectorType(operandType1);
+    String operatorSymbol = tdesc[4];
+    String outputFile = joinPath(this.expressionOutputDirectory, className + ".java");
+
+    //Read the template into a string;
+    String templateFile = joinPath(this.expressionTemplateDirectory, tdesc[0] + ".txt");
+    String templateString = readFile(templateFile);
+    templateString = templateString.replaceAll("<ClassName>", className);
+    templateString = templateString.replaceAll("<InputColumnVectorType>", inputColumnVectorType);
+    templateString = templateString.replaceAll("<OutputColumnVectorType>", outputColumnVectorType);
+    templateString = templateString.replaceAll("<OperatorSymbol>", operatorSymbol);
+    templateString = templateString.replaceAll("<OperandType1>", operandType1);
+    templateString = templateString.replaceAll("<OperandType2>", operandType2);
+    templateString = templateString.replaceAll("<ReturnType>", returnType);
+    writeFile(outputFile, templateString);
+
+    if(returnType==null) {
+      testCodeGen.addColumnScalarFilterTestCases(
+          true,
+          className,
+          inputColumnVectorType,
+          operandType2,
+          operatorSymbol);
+    } else {
+      testCodeGen.addColumnScalarOperationTestCases(
+          true,
+          className,
+          inputColumnVectorType,
+          outputColumnVectorType,
+          operandType2);
+    }
+  }
+
+  private void generateScalarBinaryOperatorColumn(String[] tdesc, String returnType,
+     String className) throws IOException {
+     String operandType1 = tdesc[2];
+     String operandType2 = tdesc[3];
+     String outputColumnVectorType = this.getColumnVectorType(returnType);
+     String inputColumnVectorType = this.getColumnVectorType(operandType2);
+     String operatorSymbol = tdesc[4];
+     String outputFile = joinPath(this.expressionOutputDirectory, className + ".java");
+
+     //Read the template into a string;
+     String templateFile = joinPath(this.expressionTemplateDirectory, tdesc[0] + ".txt");
+     String templateString = readFile(templateFile);
+     templateString = templateString.replaceAll("<ClassName>", className);
+     templateString = templateString.replaceAll("<InputColumnVectorType>", inputColumnVectorType);
+     templateString = templateString.replaceAll("<OutputColumnVectorType>", outputColumnVectorType);
+     templateString = templateString.replaceAll("<OperatorSymbol>", operatorSymbol);
+     templateString = templateString.replaceAll("<OperandType1>", operandType1);
+     templateString = templateString.replaceAll("<OperandType2>", operandType2);
+     templateString = templateString.replaceAll("<ReturnType>", returnType);
+     writeFile(outputFile, templateString);
+
+     if(returnType==null) {
+       testCodeGen.addColumnScalarFilterTestCases(
+           false,
+           className,
+           inputColumnVectorType,
+           operandType1,
+           operatorSymbol);
+     } else {
+       testCodeGen.addColumnScalarOperationTestCases(
+           false,
+           className,
+           inputColumnVectorType,
+           outputColumnVectorType,
+           operandType1);
+     }
+   }
+
+  //Binary arithmetic operator
+  private void generateColumnArithmeticScalar(String[] tdesc) throws IOException {
+    String operatorName = tdesc[1];
+    String operandType1 = tdesc[2];
+    String operandType2 = tdesc[3];
+    String className = getCamelCaseType(operandType1)
+        + "Col" + operatorName + getCamelCaseType(operandType2) + "Scalar";
+    String returnType = getArithmeticReturnType(operandType1, operandType2);
+    generateColumnBinaryOperatorScalar(tdesc, returnType, className);
+  }
+
+  private void generateScalarArithmeticColumn(String[] tdesc) throws IOException {
+    String operatorName = tdesc[1];
+    String operandType1 = tdesc[2];
+    String operandType2 = tdesc[3];
+    String className = getCamelCaseType(operandType1)
+        + "Scalar" + operatorName + getCamelCaseType(operandType2) + "Column";
+    String returnType = getArithmeticReturnType(operandType1, operandType2);
+    generateScalarBinaryOperatorColumn(tdesc, returnType, className);
+  }
+
+
+   static void writeFile(String outputFile, String str) throws IOException {
+    BufferedWriter w = new BufferedWriter(new FileWriter(outputFile));
+    w.write(str);
+    w.close();
+  }
+
+   static String readFile(String templateFile) throws IOException {
+    BufferedReader r = new BufferedReader(new FileReader(templateFile));
+    String line = r.readLine();
+    StringBuilder b = new StringBuilder();
+    while (line != null) {
+      b.append(line);
+      b.append("\n");
+      line = r.readLine();
+    }
+    r.close();
+    return b.toString();
+  }
+
+  static String getCamelCaseType(String type) {
+    if (type == null) {
+      return null;
+    }
+    if (type.equals("long")) {
+      return "Long";
+    } else if (type.equals("double")) {
+      return "Double";
+    } else {
+      return type;
+    }
+  }
+
+  private String getArithmeticReturnType(String operandType1,
+      String operandType2) {
+    if (operandType1.equals("double") ||
+        operandType2.equals("double")) {
+      return "double";
+    } else {
+      return "long";
+    }
+  }
+
+  private String getColumnVectorType(String primitiveType) {
+    if(primitiveType!=null && primitiveType.equals("double")) {
+      return "DoubleColumnVector";
+    }
+    return "LongColumnVector";
+  }
+
+  private String getOutputWritableType(String primitiveType) throws Exception {
+    if (primitiveType.equals("long")) {
+      return "LongWritable";
+    } else if (primitiveType.equals("double")) {
+      return "DoubleWritable";
+    }
+    throw new Exception("Unimplemented primitive output writable: " + primitiveType);
+  }
+
+  private String getOutputObjectInspector(String primitiveType) throws Exception {
+    if (primitiveType.equals("long")) {
+      return "PrimitiveObjectInspectorFactory.writableLongObjectInspector";
+    } else if (primitiveType.equals("double")) {
+      return "PrimitiveObjectInspectorFactory.writableDoubleObjectInspector";
+    }
+    throw new Exception("Unimplemented primitive output inspector: " + primitiveType);
+  }
+
+  public void setTemplateBaseDir(String templateBaseDir) {
+    this.templateBaseDir = templateBaseDir;
+  }
+
+  public void setBuildDir(String buildDir) {
+    this.buildDir = buildDir;
+  }
+}
+

Added: hive/branches/vectorization/ant/src/org/apache/hadoop/hive/ant/GenVectorTestCode.java
URL: http://svn.apache.org/viewvc/hive/branches/vectorization/ant/src/org/apache/hadoop/hive/ant/GenVectorTestCode.java?rev=1525251&view=auto
==============================================================================
--- hive/branches/vectorization/ant/src/org/apache/hadoop/hive/ant/GenVectorTestCode.java (added)
+++ hive/branches/vectorization/ant/src/org/apache/hadoop/hive/ant/GenVectorTestCode.java Sat Sep 21 15:29:31 2013
@@ -0,0 +1,258 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hadoop.hive.ant;
+
+import java.io.IOException;
+import java.util.HashMap;
+
+/**
+ *
+ * GenVectorTestCode.
+ * This class is mutable and maintains a hashmap of TestSuiteClassName to test cases.
+ * The tests cases are added over the course of vectorized expressions class generation,
+ * with test classes being outputted at the end. For each column vector (inputs and/or outputs)
+ * a matrix of pairwise covering Booleans is used to generate test cases across nulls and
+ * repeating dimensions. Based on the input column vector(s) nulls and repeating states
+ * the states of the output column vector (if there is one) is validated, along with the null
+ * vector. For filter operations the selection vector is validated against the generated
+ * data. Each template corresponds to a class representing a test suite.
+ */
+public class GenVectorTestCode {
+
+  public enum TestSuiteClassName{
+    TestColumnScalarOperationVectorExpressionEvaluation,
+    TestColumnScalarFilterVectorExpressionEvaluation,
+    TestColumnColumnOperationVectorExpressionEvaluation,
+    TestColumnColumnFilterVectorExpressionEvaluation,
+  }
+
+  private final String testOutputDir;
+  private final String testTemplateDirectory;
+  private final HashMap<TestSuiteClassName,StringBuilder> testsuites;
+
+  public GenVectorTestCode(String testOutputDir, String testTemplateDirectory) {
+    this.testOutputDir = testOutputDir;
+    this.testTemplateDirectory = testTemplateDirectory;
+    testsuites = new HashMap<TestSuiteClassName, StringBuilder>();
+
+    for(TestSuiteClassName className : TestSuiteClassName.values()) {
+      testsuites.put(className,new StringBuilder());
+    }
+
+  }
+
+  public void addColumnScalarOperationTestCases(boolean op1IsCol, String vectorExpClassName,
+      String inputColumnVectorType, String outputColumnVectorType, String scalarType)
+          throws IOException {
+
+    TestSuiteClassName template =
+        TestSuiteClassName.TestColumnScalarOperationVectorExpressionEvaluation;
+
+    //Read the template into a string;
+    String templateFile = GenVectorCode.joinPath(this.testTemplateDirectory,template.toString()+".txt");
+    String templateString = removeTemplateComments(GenVectorCode.readFile(templateFile));
+
+    for(Boolean[] testMatrix :new Boolean[][]{
+        // Pairwise: InitOuputColHasNulls, InitOuputColIsRepeating, ColumnHasNulls, ColumnIsRepeating
+        {false,   true,    true,    true},
+        {false,   false,   false,   false},
+        {true,    false,   true,    false},
+        {true,    true,    false,   false},
+        {true,    false,   false,   true}}) {
+      String testCase = templateString;
+      testCase = testCase.replaceAll("<TestName>",
+          "test"
+           + vectorExpClassName
+           + createNullRepeatingNameFragment("Out", testMatrix[0], testMatrix[1])
+           + createNullRepeatingNameFragment("Col", testMatrix[2], testMatrix[3]));
+      testCase = testCase.replaceAll("<VectorExpClassName>", vectorExpClassName);
+      testCase = testCase.replaceAll("<InputColumnVectorType>", inputColumnVectorType);
+      testCase = testCase.replaceAll("<OutputColumnVectorType>", outputColumnVectorType);
+      testCase = testCase.replaceAll("<ScalarType>", scalarType);
+      testCase = testCase.replaceAll("<CamelCaseScalarType>", GenVectorCode.getCamelCaseType(scalarType));
+      testCase = testCase.replaceAll("<InitOuputColHasNulls>", testMatrix[0].toString());
+      testCase = testCase.replaceAll("<InitOuputColIsRepeating>", testMatrix[1].toString());
+      testCase = testCase.replaceAll("<ColumnHasNulls>", testMatrix[2].toString());
+      testCase = testCase.replaceAll("<ColumnIsRepeating>", testMatrix[3].toString());
+
+      if(op1IsCol){
+        testCase = testCase.replaceAll("<ConstructorParams>","0, scalarValue");
+      }else{
+        testCase = testCase.replaceAll("<ConstructorParams>","scalarValue, 0");
+      }
+
+      testsuites.get(template).append(testCase);
+    }
+  }
+
+  public void addColumnScalarFilterTestCases(boolean op1IsCol, String vectorExpClassName,
+      String inputColumnVectorType, String scalarType, String operatorSymbol)
+          throws IOException {
+
+    TestSuiteClassName template =
+        TestSuiteClassName.TestColumnScalarFilterVectorExpressionEvaluation;
+
+    //Read the template into a string;
+    String templateFile = GenVectorCode.joinPath(this.testTemplateDirectory,template.toString()+".txt");
+    String templateString = removeTemplateComments(GenVectorCode.readFile(templateFile));
+
+    for(Boolean[] testMatrix : new Boolean[][]{
+        // Pairwise: ColumnHasNulls, ColumnIsRepeating
+        {true,  true},
+        {true,  false},
+        {false, false},
+        {false, true}}) {
+      String testCase = templateString;
+      testCase = testCase.replaceAll("<TestName>",
+          "test"
+           + vectorExpClassName
+           + createNullRepeatingNameFragment("Col", testMatrix[0], testMatrix[1]));
+      testCase = testCase.replaceAll("<VectorExpClassName>", vectorExpClassName);
+      testCase = testCase.replaceAll("<InputColumnVectorType>", inputColumnVectorType);
+      testCase = testCase.replaceAll("<ScalarType>", scalarType);
+      testCase = testCase.replaceAll("<CamelCaseScalarType>", GenVectorCode.getCamelCaseType(scalarType));
+      testCase = testCase.replaceAll("<ColumnHasNulls>", testMatrix[0].toString());
+      testCase = testCase.replaceAll("<ColumnIsRepeating>", testMatrix[1].toString());
+      testCase = testCase.replaceAll("<Operator>", operatorSymbol);
+
+      if(op1IsCol){
+        testCase = testCase.replaceAll("<Operand1>","inputColumnVector.vector[i]");
+        testCase = testCase.replaceAll("<Operand2>","scalarValue");
+      }else{
+        testCase = testCase.replaceAll("<Operand1>","scalarValue");
+        testCase = testCase.replaceAll("<Operand2>","inputColumnVector.vector[i]");
+      }
+
+      testsuites.get(template).append(testCase);
+    }
+  }
+
+  public void addColumnColumnOperationTestCases(String vectorExpClassName,
+      String inputColumnVectorType1, String inputColumnVectorType2, String outputColumnVectorType)
+          throws IOException {
+
+    TestSuiteClassName template=
+     TestSuiteClassName.TestColumnColumnOperationVectorExpressionEvaluation;
+
+    //Read the template into a string;
+    String templateFile = GenVectorCode.joinPath(this.testTemplateDirectory,template.toString()+".txt");
+    String templateString = removeTemplateComments(GenVectorCode.readFile(templateFile));
+
+    for(Boolean[] testMatrix : new Boolean[][]{
+        // Pairwise: InitOuputColHasNulls, InitOuputColIsRepeating, Column1HasNulls,
+        // Column1IsRepeating, Column2HasNulls, Column2IsRepeating
+        {true,    true,    false,   true,    true,    true},
+        {false,   false,   true,    false,   false,   false},
+        {true,    false,   true,    false,   true,    true},
+        {true,    true,    true,    true,    false,   false},
+        {false,   false,   false,   true,    true,    false},
+        {false,   true,    false,   false,   false,   true}}) {
+      String testCase = templateString;
+      testCase = testCase.replaceAll("<TestName>",
+          "test"
+          + vectorExpClassName
+          + createNullRepeatingNameFragment("Out", testMatrix[0], testMatrix[1])
+          + createNullRepeatingNameFragment("C1", testMatrix[2], testMatrix[3])
+          + createNullRepeatingNameFragment("C2", testMatrix[4], testMatrix[5]));
+      testCase = testCase.replaceAll("<VectorExpClassName>", vectorExpClassName);
+      testCase = testCase.replaceAll("<InputColumnVectorType1>", inputColumnVectorType1);
+      testCase = testCase.replaceAll("<InputColumnVectorType2>", inputColumnVectorType2);
+      testCase = testCase.replaceAll("<OutputColumnVectorType>", outputColumnVectorType);
+      testCase = testCase.replaceAll("<InitOuputColHasNulls>", testMatrix[0].toString());
+      testCase = testCase.replaceAll("<InitOuputColIsRepeating>", testMatrix[1].toString());
+      testCase = testCase.replaceAll("<Column1HasNulls>", testMatrix[2].toString());
+      testCase = testCase.replaceAll("<Column1IsRepeating>", testMatrix[3].toString());
+      testCase = testCase.replaceAll("<Column2HasNulls>", testMatrix[4].toString());
+      testCase = testCase.replaceAll("<Column2IsRepeating>", testMatrix[5].toString());
+
+      testsuites.get(template).append(testCase);
+    }
+  }
+
+  public void addColumnColumnFilterTestCases(String vectorExpClassName,
+      String inputColumnVectorType1, String inputColumnVectorType2,  String operatorSymbol)
+          throws IOException {
+
+      TestSuiteClassName template=
+          TestSuiteClassName.TestColumnColumnFilterVectorExpressionEvaluation;
+
+      //Read the template into a string;
+      String templateFile = GenVectorCode.joinPath(this.testTemplateDirectory,template.toString()+".txt");
+      String templateString = removeTemplateComments(GenVectorCode.readFile(templateFile));
+
+      for(Boolean[] testMatrix : new Boolean[][]{
+          // Pairwise: Column1HasNulls, Column1IsRepeating, Column2HasNulls, Column2IsRepeating
+          {false,   true,    true,    true},
+          {false,   false,   false,   false},
+          {true,    false,   true,    false},
+          {true,    true,    false,   false},
+          {true,    false,   false,   true}}) {
+        String testCase = templateString;
+        testCase = testCase.replaceAll("<TestName>",
+            "test"
+            + vectorExpClassName
+            + createNullRepeatingNameFragment("C1", testMatrix[0], testMatrix[1])
+            + createNullRepeatingNameFragment("C2", testMatrix[2], testMatrix[3]));
+        testCase = testCase.replaceAll("<VectorExpClassName>", vectorExpClassName);
+        testCase = testCase.replaceAll("<InputColumnVectorType1>", inputColumnVectorType1);
+        testCase = testCase.replaceAll("<InputColumnVectorType2>", inputColumnVectorType2);
+        testCase = testCase.replaceAll("<Column1HasNulls>", testMatrix[0].toString());
+        testCase = testCase.replaceAll("<Column1IsRepeating>", testMatrix[1].toString());
+        testCase = testCase.replaceAll("<Column2HasNulls>", testMatrix[2].toString());
+        testCase = testCase.replaceAll("<Column2IsRepeating>", testMatrix[3].toString());
+        testCase = testCase.replaceAll("<Operator>", operatorSymbol);
+
+        testsuites.get(template).append(testCase);
+      }
+    }
+
+  public void generateTestSuites() throws IOException {
+
+    String templateFile = GenVectorCode.joinPath(this.testTemplateDirectory, "TestClass.txt");
+    for(TestSuiteClassName testClass : testsuites.keySet()) {
+
+      String templateString = GenVectorCode.readFile(templateFile);
+      templateString = templateString.replaceAll("<ClassName>", testClass.toString());
+      templateString = templateString.replaceAll("<TestCases>", testsuites.get(testClass).toString());
+
+      String outputFile = GenVectorCode.joinPath(this.testOutputDir, testClass + ".java");
+
+      GenVectorCode.writeFile(outputFile, templateString);
+    }
+  }
+
+  private static String createNullRepeatingNameFragment(String idenitfier, boolean nulls, boolean repeating)
+  {
+    if(nulls || repeating){
+      if(nulls){
+        idenitfier+="Nulls";
+      }
+      if(repeating){
+        idenitfier+="Repeats";
+      }
+      return idenitfier;
+    }
+
+    return "";
+  }
+
+  private static String removeTemplateComments(String templateString){
+    return templateString.replaceAll("(?s)<!--(.*)-->", "");
+  }
+}

Modified: hive/branches/vectorization/build.xml
URL: http://svn.apache.org/viewvc/hive/branches/vectorization/build.xml?rev=1525251&r1=1525250&r2=1525251&view=diff
==============================================================================
--- hive/branches/vectorization/build.xml (original)
+++ hive/branches/vectorization/build.xml Sat Sep 21 15:29:31 2013
@@ -263,6 +263,12 @@
   <target name="init" depends="ivy-init-antlib,deploy-ant-tasks">
     <echo message="Project: ${ant.project.name}"/>
     <iterate target="init" iterate="${iterate.hive.all}"/>
+
+    <mkdir dir="${build.dir.hive}/ql/gen/vector/org/apache/hadoop/hive/ql/exec/vector/expressions/gen"/>
+    <mkdir dir="${build.dir.hive}/ql/gen/vector/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/gen"/>
+    <mkdir dir="${build.dir.hive}/ql/test/src/org/apache/hadoop/hive/ql/exec/vector/expressions/gen"/>
+    <vectorcodegen templateBaseDir="${hive.root}/ql/src/gen/vectorization/" buildDir="${build.dir.hive}" />
+
   </target>
 
   <target name="test-init">
@@ -283,8 +289,13 @@
     <subant target="jar">
       <fileset dir="." includes="ant/build.xml"/>
     </subant>
+
     <taskdef name="getversionpref" classname="org.apache.hadoop.hive.ant.GetVersionPref"
              classpath="${build.dir.hive}/anttasks/hive-anttasks-${version}.jar"/>
+
+    <taskdef name="vectorcodegen" classname="org.apache.hadoop.hive.ant.GenVectorCode"
+        classpath="${build.dir.hive}/anttasks/hive-anttasks-${version}.jar"/>
+
   </target>
 
   
@@ -741,6 +752,7 @@
       <packageset dir="ql/src/test"/>
       <packageset dir="ql/src/gen/thrift/gen-javabean"/>
       <packageset dir="${build.dir.hive}/ql/gen/antlr/gen-java"/>
+      <packageset dir="${build.dir.hive}/ql/gen/vector"/>
       <packageset dir="shims/src/common/java"/>
 
       <link href="${javadoc.link.java}"/>

Modified: hive/branches/vectorization/ql/build.xml
URL: http://svn.apache.org/viewvc/hive/branches/vectorization/ql/build.xml?rev=1525251&r1=1525250&r2=1525251&view=diff
==============================================================================
--- hive/branches/vectorization/ql/build.xml (original)
+++ hive/branches/vectorization/ql/build.xml Sat Sep 21 15:29:31 2013
@@ -190,7 +190,7 @@
     <echo message="Project: ${ant.project.name}"/>
     <javac
      encoding="${build.encoding}"
-     srcdir="${src.dir}:${basedir}/src/gen/thrift/gen-javabean:${build.dir}/gen/antlr/gen-java:${protobuf.build.dir}"
+     srcdir="${src.dir}:${basedir}/src/gen/thrift/gen-javabean:${build.dir}/gen/antlr/gen-java:${protobuf.build.dir}:${build.dir}/gen/vector"
      includes="**/*.java"
      destdir="${build.classes}"
      debug="${javac.debug}"

Modified: hive/branches/vectorization/ql/src/test/results/clientpositive/input4.q.out
URL: http://svn.apache.org/viewvc/hive/branches/vectorization/ql/src/test/results/clientpositive/input4.q.out?rev=1525251&r1=1525250&r2=1525251&view=diff
==============================================================================
--- hive/branches/vectorization/ql/src/test/results/clientpositive/input4.q.out (original)
+++ hive/branches/vectorization/ql/src/test/results/clientpositive/input4.q.out Sat Sep 21 15:29:31 2013
@@ -48,7 +48,7 @@ PREHOOK: type: QUERY
 POSTHOOK: query: EXPLAIN FORMATTED
 SELECT Input4Alias.VALUE, Input4Alias.KEY FROM INPUT4 AS Input4Alias
 POSTHOOK: type: QUERY
-{"STAGE PLANS":{"Stage-1":{"Map Reduce":{"Map:":{"Split Sample:":{},"Alias -> Map Operator Tree:":{"input4alias":{"TS_0":{"SEL_1":{"FS_2":{"File Output Operator":{"GlobalTableId:":"0","compressed:":"false","table:":{"input format:":"org.apache.hadoop.mapred.TextInputFormat","output format:":"org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat"}}}}}}}}}},"Stage-0":{"Fetch Operator":{"limit:":"-1"}}},"STAGE DEPENDENCIES":{"Stage-1":{"ROOT STAGE":"TRUE"},"Stage-0":{"ROOT STAGE":"TRUE"}},"ABSTRACT SYNTAX TREE":"(TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME INPUT4) Input4Alias)) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (. (TOK_TABLE_OR_COL Input4Alias) VALUE)) (TOK_SELEXPR (. (TOK_TABLE_OR_COL Input4Alias) KEY)))))"}
+{"STAGE PLANS":{"Stage-1":{"Map Reduce":{"Vectorized execution:":"false","Map:":{"Vectorized execution:":"false","Split Sample:":{},"Alias -> Map Operator Tree:":{"input4alias":{"TS_0":{"SEL_1":{"FS_2":{"File Output Operator":{"Vectorized execution:":"false","GlobalTableId:":"0","compressed:":"false","table:":{"input format:":"org.apache.hadoop.mapred.TextInputFormat","output format:":"org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat"}}}}}}}}}},"Stage-0":{"Fetch Operator":{"limit:":"-1"}}},"STAGE DEPENDENCIES":{"Stage-1":{"ROOT STAGE":"TRUE"},"Stage-0":{"ROOT STAGE":"TRUE"}},"ABSTRACT SYNTAX TREE":"(TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME INPUT4) Input4Alias)) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (. (TOK_TABLE_OR_COL Input4Alias) VALUE)) (TOK_SELEXPR (. (TOK_TABLE_OR_COL Input4Alias) KEY)))))"}
 PREHOOK: query: SELECT Input4Alias.VALUE, Input4Alias.KEY FROM INPUT4 AS Input4Alias
 PREHOOK: type: QUERY
 PREHOOK: Input: default@input4

Modified: hive/branches/vectorization/ql/src/test/results/clientpositive/plan_json.q.out
URL: http://svn.apache.org/viewvc/hive/branches/vectorization/ql/src/test/results/clientpositive/plan_json.q.out?rev=1525251&r1=1525250&r2=1525251&view=diff
==============================================================================
--- hive/branches/vectorization/ql/src/test/results/clientpositive/plan_json.q.out (original)
+++ hive/branches/vectorization/ql/src/test/results/clientpositive/plan_json.q.out Sat Sep 21 15:29:31 2013
@@ -6,4 +6,4 @@ POSTHOOK: query: -- explain plan json:  
 
 EXPLAIN FORMATTED SELECT count(1) FROM src
 POSTHOOK: type: QUERY
-{"STAGE PLANS":{"Stage-1":{"Map Reduce":{"Map:":{"Split Sample:":{},"Alias -> Map Operator Tree:":{"src":{"TS_0":{"SEL_1":{"GBY_2":{"RS_3":{"Reduce Output Operator":{"Map-reduce partition columns:":[],"sort order:":"","tag:":"-1","value expressions:":[{"type:":"bigint","expr:":"_col0"}],"key expressions:":[]}}}}}}}},"Reduce:":{"Reduce Operator Tree:":{"GBY_4":{"SEL_5":{"FS_6":{"File Output Operator":{"GlobalTableId:":"0","compressed:":"false","table:":{"input format:":"org.apache.hadoop.mapred.TextInputFormat","output format:":"org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat"}}}}}}}}},"Stage-0":{"Fetch Operator":{"limit:":"-1"}}},"STAGE DEPENDENCIES":{"Stage-1":{"ROOT STAGE":"TRUE"},"Stage-0":{"ROOT STAGE":"TRUE"}},"ABSTRACT SYNTAX TREE":"(TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME src))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_FUNCTION count 1)))))"}
+{"STAGE PLANS":{"Stage-1":{"Map Reduce":{"Vectorized execution:":"false","Map:":{"Vectorized execution:":"false","Split Sample:":{},"Alias -> Map Operator Tree:":{"src":{"TS_0":{"SEL_1":{"GBY_2":{"RS_3":{"Reduce Output Operator":{"Vectorized execution:":"false","Map-reduce partition columns:":[],"sort order:":"","tag:":"-1","value expressions:":[{"type:":"bigint","expr:":"_col0"}],"key expressions:":[]}}}}}}}},"Reduce:":{"Vectorized execution:":"false","Reduce Operator Tree:":{"GBY_4":{"SEL_5":{"FS_6":{"File Output Operator":{"Vectorized execution:":"false","GlobalTableId:":"0","compressed:":"false","table:":{"input format:":"org.apache.hadoop.mapred.TextInputFormat","output format:":"org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat"}}}}}}}}},"Stage-0":{"Fetch Operator":{"limit:":"-1"}}},"STAGE DEPENDENCIES":{"Stage-1":{"ROOT STAGE":"TRUE"},"Stage-0":{"ROOT STAGE":"TRUE"}},"ABSTRACT SYNTAX TREE":"(TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME src))) (TOK_INSERT (TOK_DESTINA
 TION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_FUNCTION count 1)))))"}