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 2014/09/05 17:59:50 UTC
svn commit: r1622729 [1/8] - in /hive/trunk:
ant/src/org/apache/hadoop/hive/ant/
ql/src/gen/vectorization/ExpressionTemplates/
ql/src/java/org/apache/hadoop/hive/ql/exec/vector/
ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/ ql/src/java...
Author: hashutosh
Date: Fri Sep 5 15:59:47 2014
New Revision: 1622729
URL: http://svn.apache.org/r1622729
Log:
HIVE-5760 : Add vectorized support for CHAR/VARCHAR data types (Matt McCline via Jason Dere)
Added:
hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/FilterStringGroupColumnCompareStringGroupColumn.txt
hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/FilterStringGroupColumnCompareStringGroupScalarBase.txt
hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/FilterStringGroupColumnCompareStringScalar.txt
hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/FilterStringGroupColumnCompareTruncStringScalar.txt
hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/FilterStringGroupScalarCompareStringGroupColumnBase.txt
hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/FilterStringScalarCompareStringGroupColumn.txt
hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/FilterTruncStringColumnBetween.txt
hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/FilterTruncStringScalarCompareStringGroupColumn.txt
hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/StringGroupColumnCompareStringGroupColumn.txt
hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/StringGroupColumnCompareStringGroupScalarBase.txt
hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/StringGroupColumnCompareStringScalar.txt
hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/StringGroupColumnCompareTruncStringScalar.txt
hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/StringGroupScalarCompareStringGroupColumnBase.txt
hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/StringScalarCompareStringGroupColumn.txt
hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/TruncStringScalarCompareStringGroupColumn.txt
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/AggregateDefinition.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastBooleanToCharViaLongToChar.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastBooleanToVarCharViaLongToVarChar.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDateToChar.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDateToVarChar.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToChar.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToVarChar.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastLongToChar.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastLongToVarChar.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastStringGroupToChar.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastStringGroupToVarChar.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CharScalarConcatStringGroupCol.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprCharScalarStringGroupColumn.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprCharScalarStringScalar.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprStringGroupColumnCharScalar.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprStringGroupColumnStringGroupColumn.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprStringGroupColumnStringScalar.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprStringGroupColumnVarCharScalar.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprStringScalarCharScalar.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprStringScalarStringGroupColumn.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprStringScalarVarCharScalar.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprVarCharScalarStringGroupColumn.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprVarCharScalarStringScalar.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringGroupColConcatCharScalar.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringGroupColConcatStringScalar.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringGroupColConcatVarCharScalar.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringGroupConcatColCol.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringScalarConcatStringGroupCol.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/TruncStringOutput.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VarCharScalarConcatStringGroupCol.java
hive/trunk/ql/src/test/queries/clientpositive/vector_char_2.q
hive/trunk/ql/src/test/queries/clientpositive/vector_char_simple.q
hive/trunk/ql/src/test/queries/clientpositive/vector_varchar_simple.q
hive/trunk/ql/src/test/results/clientpositive/tez/vector_char_2.q.out
hive/trunk/ql/src/test/results/clientpositive/tez/vector_char_simple.q.out
hive/trunk/ql/src/test/results/clientpositive/tez/vector_varchar_simple.q.out
hive/trunk/ql/src/test/results/clientpositive/vector_char_2.q.out
hive/trunk/ql/src/test/results/clientpositive/vector_char_simple.q.out
hive/trunk/ql/src/test/results/clientpositive/vector_varchar_simple.q.out
Removed:
hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/FilterStringColumnCompareColumn.txt
hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/FilterStringColumnCompareScalar.txt
hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/FilterStringScalarCompareColumn.txt
hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/StringColumnCompareColumn.txt
hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/StringColumnCompareScalar.txt
hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/StringScalarCompareColumn.txt
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprStringColumnStringColumn.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprStringColumnStringScalar.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprStringScalarStringColumn.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringConcatColCol.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringConcatColScalar.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringConcatScalarCol.java
Modified:
hive/trunk/ant/src/org/apache/hadoop/hive/ant/GenVectorCode.java
hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/ColumnCompareColumn.txt
hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/ColumnCompareScalar.txt
hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/ColumnUnaryFunc.txt
hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/FilterColumnCompareColumn.txt
hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/FilterColumnCompareScalar.txt
hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/FilterScalarCompareColumn.txt
hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/FilterStringColumnBetween.txt
hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/IfExprColumnColumn.txt
hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/IfExprColumnScalar.txt
hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/IfExprScalarColumn.txt
hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/IfExprScalarScalar.txt
hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/ScalarCompareColumn.txt
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorExpressionDescriptor.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedBatchUtil.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedColumnarSerDe.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedRowBatchCtx.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/AbstractFilterStringColLikeStringScalar.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastBooleanToStringViaLongToString.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDateToString.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToDecimal.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToString.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastLongToDate.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastLongToString.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastStringToDate.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastStringToDecimal.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/ConstantVectorExpression.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DecimalToStringUnaryUDF.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterColAndScalar.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterColOrScalar.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterExprAndExpr.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterExprOrExpr.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterScalarAndColumn.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterScalarOrColumn.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncDoubleToDecimal.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncLogWithBaseDoubleToDouble.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncLogWithBaseLongToDouble.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncLongToDecimal.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncLongToString.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncPowerDoubleToDouble.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncPowerLongToDouble.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncRand.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncRoundWithNumDigitsDecimalToDecimal.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprStringScalarStringScalar.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IsNotNull.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IsNull.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColDivideLongColumn.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColDivideLongScalar.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarDivideLongColumn.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongToStringUnaryUDF.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/NotCol.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/PosModDoubleToDouble.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/PosModLongToLong.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/RoundWithNumDigitsDoubleToDouble.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/SelectColumnIsFalse.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/SelectColumnIsNotNull.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/SelectColumnIsNull.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/SelectColumnIsTrue.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringExpr.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringLength.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringSubstrColStart.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringSubstrColStartLen.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringUnaryUDF.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringUnaryUDFDirect.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorExpression.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorExpressionWriterFactory.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateAddColCol.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateAddColScalar.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateAddScalarCol.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateDiffColCol.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateDiffColScalar.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateDiffScalarCol.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateLong.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFTimestampFieldLong.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFTimestampFieldString.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/udf/VectorUDFAdaptor.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/io/orc/RecordReaderImpl.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToBoolean.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFConcat.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFIf.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPEqual.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPEqualOrGreaterThan.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPEqualOrLessThan.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPGreaterThan.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPLessThan.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPNotEqual.java
hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/TestVectorizationContext.java
hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorConditionalExpressions.java
hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorGenericDateExpressions.java
hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorStringExpressions.java
Modified: hive/trunk/ant/src/org/apache/hadoop/hive/ant/GenVectorCode.java
URL: http://svn.apache.org/viewvc/hive/trunk/ant/src/org/apache/hadoop/hive/ant/GenVectorCode.java?rev=1622729&r1=1622728&r2=1622729&view=diff
==============================================================================
--- hive/trunk/ant/src/org/apache/hadoop/hive/ant/GenVectorCode.java (original)
+++ hive/trunk/ant/src/org/apache/hadoop/hive/ant/GenVectorCode.java Fri Sep 5 15:59:47 2014
@@ -232,29 +232,98 @@ public class GenVectorCode extends Task
{"FilterScalarCompareColumn", "GreaterEqual", "long", "long", ">="},
{"FilterScalarCompareColumn", "GreaterEqual", "double", "long", ">="},
- {"FilterStringColumnCompareScalar", "Equal", "=="},
- {"FilterStringColumnCompareScalar", "NotEqual", "!="},
- {"FilterStringColumnCompareScalar", "Less", "<"},
- {"FilterStringColumnCompareScalar", "LessEqual", "<="},
- {"FilterStringColumnCompareScalar", "Greater", ">"},
- {"FilterStringColumnCompareScalar", "GreaterEqual", ">="},
+ {"FilterStringGroupColumnCompareStringGroupScalarBase", "Equal", "=="},
+ {"FilterStringGroupColumnCompareStringGroupScalarBase", "NotEqual", "!="},
+ {"FilterStringGroupColumnCompareStringGroupScalarBase", "Less", "<"},
+ {"FilterStringGroupColumnCompareStringGroupScalarBase", "LessEqual", "<="},
+ {"FilterStringGroupColumnCompareStringGroupScalarBase", "Greater", ">"},
+ {"FilterStringGroupColumnCompareStringGroupScalarBase", "GreaterEqual", ">="},
+
+ {"FilterStringGroupColumnCompareStringScalar", "Equal", "=="},
+ {"FilterStringGroupColumnCompareStringScalar", "NotEqual", "!="},
+ {"FilterStringGroupColumnCompareStringScalar", "Less", "<"},
+ {"FilterStringGroupColumnCompareStringScalar", "LessEqual", "<="},
+ {"FilterStringGroupColumnCompareStringScalar", "Greater", ">"},
+ {"FilterStringGroupColumnCompareStringScalar", "GreaterEqual", ">="},
+
+ {"FilterStringGroupColumnCompareTruncStringScalar", "VarChar", "Equal", "=="},
+ {"FilterStringGroupColumnCompareTruncStringScalar", "VarChar", "NotEqual", "!="},
+ {"FilterStringGroupColumnCompareTruncStringScalar", "VarChar", "Less", "<"},
+ {"FilterStringGroupColumnCompareTruncStringScalar", "VarChar", "LessEqual", "<="},
+ {"FilterStringGroupColumnCompareTruncStringScalar", "VarChar", "Greater", ">"},
+ {"FilterStringGroupColumnCompareTruncStringScalar", "VarChar", "GreaterEqual", ">="},
+
+ {"FilterStringGroupColumnCompareTruncStringScalar", "Char", "Equal", "=="},
+ {"FilterStringGroupColumnCompareTruncStringScalar", "Char", "NotEqual", "!="},
+ {"FilterStringGroupColumnCompareTruncStringScalar", "Char", "Less", "<"},
+ {"FilterStringGroupColumnCompareTruncStringScalar", "Char", "LessEqual", "<="},
+ {"FilterStringGroupColumnCompareTruncStringScalar", "Char", "Greater", ">"},
+ {"FilterStringGroupColumnCompareTruncStringScalar", "Char", "GreaterEqual", ">="},
{"FilterStringColumnBetween", ""},
{"FilterStringColumnBetween", "!"},
- {"StringColumnCompareScalar", "Equal", "=="},
- {"StringColumnCompareScalar", "NotEqual", "!="},
- {"StringColumnCompareScalar", "Less", "<"},
- {"StringColumnCompareScalar", "LessEqual", "<="},
- {"StringColumnCompareScalar", "Greater", ">"},
- {"StringColumnCompareScalar", "GreaterEqual", ">="},
-
- {"FilterStringScalarCompareColumn", "Equal", "=="},
- {"FilterStringScalarCompareColumn", "NotEqual", "!="},
- {"FilterStringScalarCompareColumn", "Less", "<"},
- {"FilterStringScalarCompareColumn", "LessEqual", "<="},
- {"FilterStringScalarCompareColumn", "Greater", ">"},
- {"FilterStringScalarCompareColumn", "GreaterEqual", ">="},
+ {"FilterTruncStringColumnBetween", "VarChar", ""},
+ {"FilterTruncStringColumnBetween", "VarChar", "!"},
+
+ {"FilterTruncStringColumnBetween", "Char", ""},
+ {"FilterTruncStringColumnBetween", "Char", "!"},
+
+ {"StringGroupColumnCompareStringGroupScalarBase", "Equal", "=="},
+ {"StringGroupColumnCompareStringGroupScalarBase", "NotEqual", "!="},
+ {"StringGroupColumnCompareStringGroupScalarBase", "Less", "<"},
+ {"StringGroupColumnCompareStringGroupScalarBase", "LessEqual", "<="},
+ {"StringGroupColumnCompareStringGroupScalarBase", "Greater", ">"},
+ {"StringGroupColumnCompareStringGroupScalarBase", "GreaterEqual", ">="},
+
+ {"StringGroupColumnCompareStringScalar", "Equal", "=="},
+ {"StringGroupColumnCompareStringScalar", "NotEqual", "!="},
+ {"StringGroupColumnCompareStringScalar", "Less", "<"},
+ {"StringGroupColumnCompareStringScalar", "LessEqual", "<="},
+ {"StringGroupColumnCompareStringScalar", "Greater", ">"},
+ {"StringGroupColumnCompareStringScalar", "GreaterEqual", ">="},
+
+ {"StringGroupColumnCompareTruncStringScalar", "VarChar", "Equal", "=="},
+ {"StringGroupColumnCompareTruncStringScalar", "VarChar", "NotEqual", "!="},
+ {"StringGroupColumnCompareTruncStringScalar", "VarChar", "Less", "<"},
+ {"StringGroupColumnCompareTruncStringScalar", "VarChar", "LessEqual", "<="},
+ {"StringGroupColumnCompareTruncStringScalar", "VarChar", "Greater", ">"},
+ {"StringGroupColumnCompareTruncStringScalar", "VarChar", "GreaterEqual", ">="},
+
+ {"StringGroupColumnCompareTruncStringScalar", "Char", "Equal", "=="},
+ {"StringGroupColumnCompareTruncStringScalar", "Char", "NotEqual", "!="},
+ {"StringGroupColumnCompareTruncStringScalar", "Char", "Less", "<"},
+ {"StringGroupColumnCompareTruncStringScalar", "Char", "LessEqual", "<="},
+ {"StringGroupColumnCompareTruncStringScalar", "Char", "Greater", ">"},
+ {"StringGroupColumnCompareTruncStringScalar", "Char", "GreaterEqual", ">="},
+
+ {"FilterStringGroupScalarCompareStringGroupColumnBase", "Equal", "=="},
+ {"FilterStringGroupScalarCompareStringGroupColumnBase", "NotEqual", "!="},
+ {"FilterStringGroupScalarCompareStringGroupColumnBase", "Less", "<"},
+ {"FilterStringGroupScalarCompareStringGroupColumnBase", "LessEqual", "<="},
+ {"FilterStringGroupScalarCompareStringGroupColumnBase", "Greater", ">"},
+ {"FilterStringGroupScalarCompareStringGroupColumnBase", "GreaterEqual", ">="},
+
+ {"FilterStringScalarCompareStringGroupColumn", "Equal", "=="},
+ {"FilterStringScalarCompareStringGroupColumn", "NotEqual", "!="},
+ {"FilterStringScalarCompareStringGroupColumn", "Less", "<"},
+ {"FilterStringScalarCompareStringGroupColumn", "LessEqual", "<="},
+ {"FilterStringScalarCompareStringGroupColumn", "Greater", ">"},
+ {"FilterStringScalarCompareStringGroupColumn", "GreaterEqual", ">="},
+
+ {"FilterTruncStringScalarCompareStringGroupColumn", "VarChar", "Equal", "=="},
+ {"FilterTruncStringScalarCompareStringGroupColumn", "VarChar", "NotEqual", "!="},
+ {"FilterTruncStringScalarCompareStringGroupColumn", "VarChar", "Less", "<"},
+ {"FilterTruncStringScalarCompareStringGroupColumn", "VarChar", "LessEqual", "<="},
+ {"FilterTruncStringScalarCompareStringGroupColumn", "VarChar", "Greater", ">"},
+ {"FilterTruncStringScalarCompareStringGroupColumn", "VarChar", "GreaterEqual", ">="},
+
+ {"FilterTruncStringScalarCompareStringGroupColumn", "Char", "Equal", "=="},
+ {"FilterTruncStringScalarCompareStringGroupColumn", "Char", "NotEqual", "!="},
+ {"FilterTruncStringScalarCompareStringGroupColumn", "Char", "Less", "<"},
+ {"FilterTruncStringScalarCompareStringGroupColumn", "Char", "LessEqual", "<="},
+ {"FilterTruncStringScalarCompareStringGroupColumn", "Char", "Greater", ">"},
+ {"FilterTruncStringScalarCompareStringGroupColumn", "Char", "GreaterEqual", ">="},
{"FilterDecimalColumnCompareScalar", "Equal", "=="},
{"FilterDecimalColumnCompareScalar", "NotEqual", "!="},
@@ -277,26 +346,47 @@ public class GenVectorCode extends Task
{"FilterDecimalColumnCompareColumn", "Greater", ">"},
{"FilterDecimalColumnCompareColumn", "GreaterEqual", ">="},
- {"StringScalarCompareColumn", "Equal", "=="},
- {"StringScalarCompareColumn", "NotEqual", "!="},
- {"StringScalarCompareColumn", "Less", "<"},
- {"StringScalarCompareColumn", "LessEqual", "<="},
- {"StringScalarCompareColumn", "Greater", ">"},
- {"StringScalarCompareColumn", "GreaterEqual", ">="},
-
- {"FilterStringColumnCompareColumn", "Equal", "=="},
- {"FilterStringColumnCompareColumn", "NotEqual", "!="},
- {"FilterStringColumnCompareColumn", "Less", "<"},
- {"FilterStringColumnCompareColumn", "LessEqual", "<="},
- {"FilterStringColumnCompareColumn", "Greater", ">"},
- {"FilterStringColumnCompareColumn", "GreaterEqual", ">="},
-
- {"StringColumnCompareColumn", "Equal", "=="},
- {"StringColumnCompareColumn", "NotEqual", "!="},
- {"StringColumnCompareColumn", "Less", "<"},
- {"StringColumnCompareColumn", "LessEqual", "<="},
- {"StringColumnCompareColumn", "Greater", ">"},
- {"StringColumnCompareColumn", "GreaterEqual", ">="},
+ {"StringGroupScalarCompareStringGroupColumnBase", "Equal", "=="},
+ {"StringGroupScalarCompareStringGroupColumnBase", "NotEqual", "!="},
+ {"StringGroupScalarCompareStringGroupColumnBase", "Less", "<"},
+ {"StringGroupScalarCompareStringGroupColumnBase", "LessEqual", "<="},
+ {"StringGroupScalarCompareStringGroupColumnBase", "Greater", ">"},
+ {"StringGroupScalarCompareStringGroupColumnBase", "GreaterEqual", ">="},
+
+ {"StringScalarCompareStringGroupColumn", "Equal", "=="},
+ {"StringScalarCompareStringGroupColumn", "NotEqual", "!="},
+ {"StringScalarCompareStringGroupColumn", "Less", "<"},
+ {"StringScalarCompareStringGroupColumn", "LessEqual", "<="},
+ {"StringScalarCompareStringGroupColumn", "Greater", ">"},
+ {"StringScalarCompareStringGroupColumn", "GreaterEqual", ">="},
+
+ {"TruncStringScalarCompareStringGroupColumn", "VarChar", "Equal", "=="},
+ {"TruncStringScalarCompareStringGroupColumn", "VarChar", "NotEqual", "!="},
+ {"TruncStringScalarCompareStringGroupColumn", "VarChar", "Less", "<"},
+ {"TruncStringScalarCompareStringGroupColumn", "VarChar", "LessEqual", "<="},
+ {"TruncStringScalarCompareStringGroupColumn", "VarChar", "Greater", ">"},
+ {"TruncStringScalarCompareStringGroupColumn", "VarChar", "GreaterEqual", ">="},
+
+ {"TruncStringScalarCompareStringGroupColumn", "Char", "Equal", "=="},
+ {"TruncStringScalarCompareStringGroupColumn", "Char", "NotEqual", "!="},
+ {"TruncStringScalarCompareStringGroupColumn", "Char", "Less", "<"},
+ {"TruncStringScalarCompareStringGroupColumn", "Char", "LessEqual", "<="},
+ {"TruncStringScalarCompareStringGroupColumn", "Char", "Greater", ">"},
+ {"TruncStringScalarCompareStringGroupColumn", "Char", "GreaterEqual", ">="},
+
+ {"FilterStringGroupColumnCompareStringGroupColumn", "Equal", "=="},
+ {"FilterStringGroupColumnCompareStringGroupColumn", "NotEqual", "!="},
+ {"FilterStringGroupColumnCompareStringGroupColumn", "Less", "<"},
+ {"FilterStringGroupColumnCompareStringGroupColumn", "LessEqual", "<="},
+ {"FilterStringGroupColumnCompareStringGroupColumn", "Greater", ">"},
+ {"FilterStringGroupColumnCompareStringGroupColumn", "GreaterEqual", ">="},
+
+ {"StringGroupColumnCompareStringGroupColumn", "Equal", "=="},
+ {"StringGroupColumnCompareStringGroupColumn", "NotEqual", "!="},
+ {"StringGroupColumnCompareStringGroupColumn", "Less", "<"},
+ {"StringGroupColumnCompareStringGroupColumn", "LessEqual", "<="},
+ {"StringGroupColumnCompareStringGroupColumn", "Greater", ">"},
+ {"StringGroupColumnCompareStringGroupColumn", "GreaterEqual", ">="},
{"FilterColumnCompareColumn", "Equal", "long", "double", "=="},
{"FilterColumnCompareColumn", "Equal", "double", "double", "=="},
@@ -359,58 +449,58 @@ public class GenVectorCode extends Task
{"ColumnCompareColumn", "GreaterEqual", "double", "long", ">="},
// template, <ClassNamePrefix>, <ReturnType>, <OperandType>, <FuncName>, <OperandCast>,
- // <ResultCast>, <Cleanup>
- {"ColumnUnaryFunc", "FuncRound", "double", "double", "MathExpr.round", "", "", ""},
+ // <ResultCast>, <Cleanup> <VectorExprArgType>
+ {"ColumnUnaryFunc", "FuncRound", "double", "double", "MathExpr.round", "", "", "", ""},
// round(longCol) returns a long and is a no-op. So it will not be implemented here.
// round(Col, N) is a special case and will be implemented separately from this template
- {"ColumnUnaryFunc", "FuncFloor", "long", "double", "Math.floor", "", "(long)", ""},
+ {"ColumnUnaryFunc", "FuncFloor", "long", "double", "Math.floor", "", "(long)", "", ""},
// Floor on an integer argument is a noop, but it is less code to handle it this way.
- {"ColumnUnaryFunc", "FuncFloor", "long", "long", "Math.floor", "", "(long)", ""},
- {"ColumnUnaryFunc", "FuncCeil", "long", "double", "Math.ceil", "", "(long)", ""},
+ {"ColumnUnaryFunc", "FuncFloor", "long", "long", "Math.floor", "", "(long)", "", ""},
+ {"ColumnUnaryFunc", "FuncCeil", "long", "double", "Math.ceil", "", "(long)", "", ""},
// Ceil on an integer argument is a noop, but it is less code to handle it this way.
- {"ColumnUnaryFunc", "FuncCeil", "long", "long", "Math.ceil", "", "(long)", ""},
- {"ColumnUnaryFunc", "FuncExp", "double", "double", "Math.exp", "", "", ""},
- {"ColumnUnaryFunc", "FuncExp", "double", "long", "Math.exp", "(double)", "", ""},
+ {"ColumnUnaryFunc", "FuncCeil", "long", "long", "Math.ceil", "", "(long)", "", ""},
+ {"ColumnUnaryFunc", "FuncExp", "double", "double", "Math.exp", "", "", "", ""},
+ {"ColumnUnaryFunc", "FuncExp", "double", "long", "Math.exp", "(double)", "", "", ""},
{"ColumnUnaryFunc", "FuncLn", "double", "double", "Math.log", "", "",
- "MathExpr.NaNToNull(outputColVector, sel, batch.selectedInUse, n, true);"},
+ "MathExpr.NaNToNull(outputColVector, sel, batch.selectedInUse, n, true);", ""},
{"ColumnUnaryFunc", "FuncLn", "double", "long", "Math.log", "(double)", "",
- "MathExpr.NaNToNull(outputColVector, sel, batch.selectedInUse, n, true);"},
+ "MathExpr.NaNToNull(outputColVector, sel, batch.selectedInUse, n, true);", ""},
{"ColumnUnaryFunc", "FuncLog10", "double", "double", "Math.log10", "", "",
- "MathExpr.NaNToNull(outputColVector, sel, batch.selectedInUse, n, true);"},
+ "MathExpr.NaNToNull(outputColVector, sel, batch.selectedInUse, n, true);", ""},
{"ColumnUnaryFunc", "FuncLog10", "double", "long", "Math.log10", "(double)", "",
- "MathExpr.NaNToNull(outputColVector, sel, batch.selectedInUse, n, true);"},
+ "MathExpr.NaNToNull(outputColVector, sel, batch.selectedInUse, n, true);", ""},
// The MathExpr class contains helper functions for cases when existing library
// routines can't be used directly.
{"ColumnUnaryFunc", "FuncLog2", "double", "double", "MathExpr.log2", "", "",
- "MathExpr.NaNToNull(outputColVector, sel, batch.selectedInUse, n, true);"},
+ "MathExpr.NaNToNull(outputColVector, sel, batch.selectedInUse, n, true);", ""},
{"ColumnUnaryFunc", "FuncLog2", "double", "long", "MathExpr.log2", "(double)", "",
- "MathExpr.NaNToNull(outputColVector, sel, batch.selectedInUse, n, true);"},
+ "MathExpr.NaNToNull(outputColVector, sel, batch.selectedInUse, n, true);", ""},
// Log(base, Col) is a special case and will be implemented separately from this template
// Pow(col, P) and Power(col, P) are special cases implemented separately from this template
{"ColumnUnaryFunc", "FuncSqrt", "double", "double", "Math.sqrt", "", "",
- "MathExpr.NaNToNull(outputColVector, sel, batch.selectedInUse, n);"},
+ "MathExpr.NaNToNull(outputColVector, sel, batch.selectedInUse, n);", ""},
{"ColumnUnaryFunc", "FuncSqrt", "double", "long", "Math.sqrt", "(double)", "",
- "MathExpr.NaNToNull(outputColVector, sel, batch.selectedInUse, n);"},
- {"ColumnUnaryFunc", "FuncAbs", "double", "double", "Math.abs", "", "", ""},
- {"ColumnUnaryFunc", "FuncAbs", "long", "long", "MathExpr.abs", "", "", ""},
- {"ColumnUnaryFunc", "FuncSin", "double", "double", "Math.sin", "", "", ""},
- {"ColumnUnaryFunc", "FuncSin", "double", "long", "Math.sin", "(double)", "", ""},
- {"ColumnUnaryFunc", "FuncASin", "double", "double", "Math.asin", "", "", ""},
- {"ColumnUnaryFunc", "FuncASin", "double", "long", "Math.asin", "(double)", "", ""},
- {"ColumnUnaryFunc", "FuncCos", "double", "double", "Math.cos", "", "", ""},
- {"ColumnUnaryFunc", "FuncCos", "double", "long", "Math.cos", "(double)", "", ""},
- {"ColumnUnaryFunc", "FuncACos", "double", "double", "Math.acos", "", "", ""},
- {"ColumnUnaryFunc", "FuncACos", "double", "long", "Math.acos", "(double)", "", ""},
- {"ColumnUnaryFunc", "FuncTan", "double", "double", "Math.tan", "", "", ""},
- {"ColumnUnaryFunc", "FuncTan", "double", "long", "Math.tan", "(double)", "", ""},
- {"ColumnUnaryFunc", "FuncATan", "double", "double", "Math.atan", "", "", ""},
- {"ColumnUnaryFunc", "FuncATan", "double", "long", "Math.atan", "(double)", "", ""},
- {"ColumnUnaryFunc", "FuncDegrees", "double", "double", "Math.toDegrees", "", "", ""},
- {"ColumnUnaryFunc", "FuncDegrees", "double", "long", "Math.toDegrees", "(double)", "", ""},
- {"ColumnUnaryFunc", "FuncRadians", "double", "double", "Math.toRadians", "", "", ""},
- {"ColumnUnaryFunc", "FuncRadians", "double", "long", "Math.toRadians", "(double)", "", ""},
- {"ColumnUnaryFunc", "FuncSign", "double", "double", "MathExpr.sign", "", "", ""},
- {"ColumnUnaryFunc", "FuncSign", "double", "long", "MathExpr.sign", "(double)", "", ""},
+ "MathExpr.NaNToNull(outputColVector, sel, batch.selectedInUse, n);", ""},
+ {"ColumnUnaryFunc", "FuncAbs", "double", "double", "Math.abs", "", "", "", ""},
+ {"ColumnUnaryFunc", "FuncAbs", "long", "long", "MathExpr.abs", "", "", "", ""},
+ {"ColumnUnaryFunc", "FuncSin", "double", "double", "Math.sin", "", "", "", ""},
+ {"ColumnUnaryFunc", "FuncSin", "double", "long", "Math.sin", "(double)", "", "", ""},
+ {"ColumnUnaryFunc", "FuncASin", "double", "double", "Math.asin", "", "", "", ""},
+ {"ColumnUnaryFunc", "FuncASin", "double", "long", "Math.asin", "(double)", "", "", ""},
+ {"ColumnUnaryFunc", "FuncCos", "double", "double", "Math.cos", "", "", "", ""},
+ {"ColumnUnaryFunc", "FuncCos", "double", "long", "Math.cos", "(double)", "", "", ""},
+ {"ColumnUnaryFunc", "FuncACos", "double", "double", "Math.acos", "", "", "", ""},
+ {"ColumnUnaryFunc", "FuncACos", "double", "long", "Math.acos", "(double)", "", "", ""},
+ {"ColumnUnaryFunc", "FuncTan", "double", "double", "Math.tan", "", "", "", ""},
+ {"ColumnUnaryFunc", "FuncTan", "double", "long", "Math.tan", "(double)", "", "", ""},
+ {"ColumnUnaryFunc", "FuncATan", "double", "double", "Math.atan", "", "", "", ""},
+ {"ColumnUnaryFunc", "FuncATan", "double", "long", "Math.atan", "(double)", "", "", ""},
+ {"ColumnUnaryFunc", "FuncDegrees", "double", "double", "Math.toDegrees", "", "", "", ""},
+ {"ColumnUnaryFunc", "FuncDegrees", "double", "long", "Math.toDegrees", "(double)", "", "", ""},
+ {"ColumnUnaryFunc", "FuncRadians", "double", "double", "Math.toRadians", "", "", "", ""},
+ {"ColumnUnaryFunc", "FuncRadians", "double", "long", "Math.toRadians", "(double)", "", "", ""},
+ {"ColumnUnaryFunc", "FuncSign", "double", "double", "MathExpr.sign", "", "", "", ""},
+ {"ColumnUnaryFunc", "FuncSign", "double", "long", "MathExpr.sign", "(double)", "", "", ""},
{"DecimalColumnUnaryFunc", "FuncFloor", "decimal", "DecimalUtil.floor"},
{"DecimalColumnUnaryFunc", "FuncCeil", "decimal", "DecimalUtil.ceiling"},
@@ -420,20 +510,24 @@ public class GenVectorCode extends Task
{"DecimalColumnUnaryFunc", "FuncNegate", "decimal", "DecimalUtil.negate"},
// Casts
- {"ColumnUnaryFunc", "Cast", "long", "double", "", "", "(long)", ""},
- {"ColumnUnaryFunc", "Cast", "double", "long", "", "", "(double)", ""},
+ {"ColumnUnaryFunc", "Cast", "long", "double", "", "", "(long)", "", ""},
+ {"ColumnUnaryFunc", "Cast", "double", "long", "", "", "(double)", "", ""},
{"ColumnUnaryFunc", "CastTimestampToLongVia", "long", "long", "MathExpr.fromTimestamp", "",
- "", ""},
+ "", "", "timestamp"},
{"ColumnUnaryFunc", "CastTimestampToDoubleVia", "double", "long",
- "MathExpr.fromTimestampToDouble", "", "", ""},
+ "MathExpr.fromTimestampToDouble", "", "", "", "timestamp"},
{"ColumnUnaryFunc", "CastDoubleToBooleanVia", "long", "double", "MathExpr.toBool", "",
- "", ""},
+ "", "", ""},
{"ColumnUnaryFunc", "CastLongToBooleanVia", "long", "long", "MathExpr.toBool", "",
- "", ""},
+ "", "", ""},
+ {"ColumnUnaryFunc", "CastDateToBooleanVia", "long", "long", "MathExpr.toBool", "",
+ "", "", "date"},
+ {"ColumnUnaryFunc", "CastTimestampToBooleanVia", "long", "long", "MathExpr.toBool", "",
+ "", "", "timestamp"},
{"ColumnUnaryFunc", "CastLongToTimestampVia", "long", "long", "MathExpr.longToTimestamp", "",
- "", ""},
+ "", "", ""},
{"ColumnUnaryFunc", "CastDoubleToTimestampVia", "long", "double",
- "MathExpr.doubleToTimestamp", "", "", ""},
+ "MathExpr.doubleToTimestamp", "", "", "", ""},
// Boolean to long is done with an IdentityExpression
// Boolean to double is done with standard Long to Double cast
@@ -658,22 +752,40 @@ public class GenVectorCode extends Task
generateVectorUDAFVar(tdesc);
} else if (tdesc[0].equals("VectorUDAFVarDecimal")) {
generateVectorUDAFVarDecimal(tdesc);
- } else if (tdesc[0].equals("FilterStringColumnCompareScalar")) {
- generateFilterStringColumnCompareScalar(tdesc);
+ } else if (tdesc[0].equals("FilterStringGroupColumnCompareStringGroupScalarBase")) {
+ generateFilterStringGroupColumnCompareStringGroupScalarBase(tdesc);
+ } else if (tdesc[0].equals("FilterStringGroupColumnCompareStringScalar")) {
+ generateFilterStringGroupColumnCompareStringScalar(tdesc);
+ } else if (tdesc[0].equals("FilterStringGroupColumnCompareTruncStringScalar")) {
+ generateFilterStringGroupColumnCompareTruncStringScalar(tdesc);
} else if (tdesc[0].equals("FilterStringColumnBetween")) {
generateFilterStringColumnBetween(tdesc);
+ } else if (tdesc[0].equals("FilterTruncStringColumnBetween")) {
+ generateFilterTruncStringColumnBetween(tdesc);
} else if (tdesc[0].equals("FilterDecimalColumnBetween")) {
generateFilterDecimalColumnBetween(tdesc);
- } else if (tdesc[0].equals("StringColumnCompareScalar")) {
- generateStringColumnCompareScalar(tdesc);
- } else if (tdesc[0].equals("FilterStringScalarCompareColumn")) {
- generateFilterStringScalarCompareColumn(tdesc);
- } else if (tdesc[0].equals("StringScalarCompareColumn")) {
- generateStringScalarCompareColumn(tdesc);
- } else if (tdesc[0].equals("FilterStringColumnCompareColumn")) {
- generateFilterStringColumnCompareColumn(tdesc);
- } else if (tdesc[0].equals("StringColumnCompareColumn")) {
- generateStringColumnCompareColumn(tdesc);
+ } else if (tdesc[0].equals("StringGroupColumnCompareStringGroupScalarBase")) {
+ generateStringGroupColumnCompareStringGroupScalarBase(tdesc);
+ } else if (tdesc[0].equals("StringGroupColumnCompareStringScalar")) {
+ generateStringGroupColumnCompareStringScalar(tdesc);
+ } else if (tdesc[0].equals("StringGroupColumnCompareTruncStringScalar")) {
+ generateStringGroupColumnCompareTruncStringScalar(tdesc);
+ } else if (tdesc[0].equals("FilterStringGroupScalarCompareStringGroupColumnBase")) {
+ generateFilterStringGroupScalarCompareStringGroupColumnBase(tdesc);
+ } else if (tdesc[0].equals("FilterStringScalarCompareStringGroupColumn")) {
+ generateFilterStringScalarCompareStringGroupColumn(tdesc);
+ } else if (tdesc[0].equals("FilterTruncStringScalarCompareStringGroupColumn")) {
+ generateFilterTruncStringScalarCompareStringGroupColumn(tdesc);
+ } else if (tdesc[0].equals("StringGroupScalarCompareStringGroupColumnBase")) {
+ generateStringGroupScalarCompareStringGroupColumnBase(tdesc);
+ } else if (tdesc[0].equals("StringScalarCompareStringGroupColumn")) {
+ generateStringScalarCompareStringGroupColumn(tdesc);
+ } else if (tdesc[0].equals("TruncStringScalarCompareStringGroupColumn")) {
+ generateTruncStringScalarCompareStringGroupColumn(tdesc);
+ } else if (tdesc[0].equals("FilterStringGroupColumnCompareStringGroupColumn")) {
+ generateFilterStringGroupColumnCompareStringGroupColumn(tdesc);
+ } else if (tdesc[0].equals("StringGroupColumnCompareStringGroupColumn")) {
+ generateStringGroupColumnCompareStringGroupColumn(tdesc);
} else if (tdesc[0].equals("IfExprColumnColumn")) {
generateIfExprColumnColumn(tdesc);
} else if (tdesc[0].equals("IfExprColumnScalar")) {
@@ -710,6 +822,35 @@ public class GenVectorCode extends Task
className, templateString);
}
+ private void generateFilterTruncStringColumnBetween(String[] tdesc) throws IOException {
+ String truncStringTypeName = tdesc[1];
+ String truncStringHiveType;
+ String truncStringHiveGetBytes;
+ if (truncStringTypeName == "Char") {
+ truncStringHiveType = "HiveChar";
+ truncStringHiveGetBytes = "getStrippedValue().getBytes()";
+ } else if (truncStringTypeName == "VarChar") {
+ truncStringHiveType = "HiveVarchar";
+ truncStringHiveGetBytes = "getValue().getBytes()";
+ } else {
+ throw new Error("Unsupported string type: " + truncStringTypeName);
+ }
+ String optionalNot = tdesc[2];
+ String className = "Filter" + truncStringTypeName + "Column" + (optionalNot.equals("!") ? "Not" : "")
+ + "Between";
+ // Read the template into a string, expand it, and write it.
+ File templateFile = new File(joinPath(this.expressionTemplateDirectory, tdesc[0] + ".txt"));
+ String templateString = readFile(templateFile);
+ templateString = templateString.replaceAll("<TruncStringTypeName>", truncStringTypeName);
+ templateString = templateString.replaceAll("<TruncStringHiveType>", truncStringHiveType);
+ templateString = templateString.replaceAll("<TruncStringHiveGetBytes>", truncStringHiveGetBytes);
+ templateString = templateString.replaceAll("<ClassName>", className);
+ templateString = templateString.replaceAll("<OptionalNot>", optionalNot);
+
+ writeFile(templateFile.lastModified(), expressionOutputDirectory, expressionClassesDirectory,
+ className, templateString);
+ }
+
private void generateFilterDecimalColumnBetween(String[] tdesc) throws IOException {
String optionalNot = tdesc[1];
String className = "FilterDecimalColumn" + (optionalNot.equals("!") ? "Not" : "")
@@ -745,14 +886,12 @@ public class GenVectorCode extends Task
}
private void generateColumnCompareColumn(String[] tdesc) throws Exception {
- //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 = getCamelCaseType(operandType1)
+ "Col" + operatorName + getCamelCaseType(operandType2) + "Column";
- generateColumnBinaryOperatorColumn(tdesc, "long", className);
+ generateColumnCompareOperatorColumn(tdesc, false, className);
}
private void generateVectorUDAFMinMax(String[] tdesc) throws Exception {
@@ -886,45 +1025,147 @@ public class GenVectorCode extends Task
writeFile(templateFile.lastModified(), udafOutputDirectory, udafClassesDirectory,
className, templateString);
}
-
-
- private void generateFilterStringScalarCompareColumn(String[] tdesc) throws IOException {
+
+ private void generateFilterStringGroupScalarCompareStringGroupColumnBase(String[] tdesc) throws IOException {
String operatorName = tdesc[1];
- String className = "FilterStringScalar" + operatorName + "StringColumn";
+ String className = "FilterStringGroupScalar" + operatorName + "StringGroupColumnBase";
// Template expansion logic is the same for both column-scalar and scalar-column cases.
generateStringColumnCompareScalar(tdesc, className);
}
- private void generateStringScalarCompareColumn(String[] tdesc) throws IOException {
+ private void generateFilterStringScalarCompareStringGroupColumn(String[] tdesc) throws IOException {
+ String operatorName = tdesc[1];
+ String className = "FilterStringScalar" + operatorName + "StringGroupColumn";
+ String baseClassName = "FilterStringGroupScalar" + operatorName + "StringGroupColumnBase";
+ String operatorSymbol = tdesc[2];
+ // Read the template into a string;
+ File templateFile = new File(joinPath(this.expressionTemplateDirectory, tdesc[0] + ".txt"));
+ String templateString = readFile(templateFile);
+ // Expand, and write result
+ templateString = templateString.replaceAll("<ClassName>", className);
+ templateString = templateString.replaceAll("<BaseClassName>", baseClassName);
+ templateString = templateString.replaceAll("<OperatorSymbol>", operatorSymbol);
+ writeFile(templateFile.lastModified(), expressionOutputDirectory, expressionClassesDirectory,
+ className, templateString);
+ }
+
+ private void generateFilterTruncStringScalarCompareStringGroupColumn(String[] tdesc) throws IOException {
+ String truncStringTypeName = tdesc[1];
+ String operatorName = tdesc[2];
+ String className = "Filter" + truncStringTypeName + "Scalar" + operatorName + "StringGroupColumn";
+ String baseClassName = "FilterStringGroupScalar" + operatorName + "StringGroupColumnBase";
+ generateStringCompareTruncStringScalar(tdesc, className, baseClassName);
+ }
+
+ private void generateStringGroupScalarCompareStringGroupColumnBase(String[] tdesc) throws IOException {
String operatorName = tdesc[1];
- String className = "StringScalar" + operatorName + "StringColumn";
+ String className = "StringGroupScalar" + operatorName + "StringGroupColumnBase";
// Template expansion logic is the same for both column-scalar and scalar-column cases.
generateStringColumnCompareScalar(tdesc, className);
}
- private void generateFilterStringColumnCompareScalar(String[] tdesc) throws IOException {
+ private void generateStringScalarCompareStringGroupColumn(String[] tdesc) throws IOException {
String operatorName = tdesc[1];
- String className = "FilterStringCol" + operatorName + "StringScalar";
- generateStringColumnCompareScalar(tdesc, className);
+ String className = "StringScalar" + operatorName + "StringGroupColumn";
+ String baseClassName = "StringGroupScalar" + operatorName + "StringGroupColumnBase";
+ String operatorSymbol = tdesc[2];
+ // Read the template into a string;
+ File templateFile = new File(joinPath(this.expressionTemplateDirectory, tdesc[0] + ".txt"));
+ String templateString = readFile(templateFile);
+ // Expand, and write result
+ templateString = templateString.replaceAll("<ClassName>", className);
+ templateString = templateString.replaceAll("<BaseClassName>", baseClassName);
+ templateString = templateString.replaceAll("<OperatorSymbol>", operatorSymbol);
+ writeFile(templateFile.lastModified(), expressionOutputDirectory, expressionClassesDirectory,
+ className, templateString); }
+
+ private void generateTruncStringScalarCompareStringGroupColumn(String[] tdesc) throws IOException {
+ String truncStringTypeName = tdesc[1];
+ String operatorName = tdesc[2];
+ String className = truncStringTypeName + "Scalar" + operatorName + "StringGroupColumn";
+ String baseClassName = "StringGroupScalar" + operatorName + "StringGroupColumnBase";
+ generateStringCompareTruncStringScalar(tdesc, className, baseClassName);
}
- private void generateStringColumnCompareScalar(String[] tdesc) throws IOException {
+ private void generateFilterStringGroupColumnCompareStringGroupScalarBase(String[] tdesc) throws IOException {
String operatorName = tdesc[1];
- String className = "StringCol" + operatorName + "StringScalar";
+ String className = "FilterStringGroupCol" + operatorName + "StringGroupScalarBase";
generateStringColumnCompareScalar(tdesc, className);
}
- private void generateFilterStringColumnCompareColumn(String[] tdesc) throws IOException {
+ private void generateFilterStringGroupColumnCompareStringScalar(String[] tdesc) throws IOException {
+ String operatorName = tdesc[1];
+ String className = "FilterStringGroupCol" + operatorName + "StringScalar";
+ String baseClassName = "FilterStringGroupCol" + operatorName + "StringGroupScalarBase";
+ String operatorSymbol = tdesc[2];
+ // Read the template into a string;
+ File templateFile = new File(joinPath(this.expressionTemplateDirectory, tdesc[0] + ".txt"));
+ String templateString = readFile(templateFile);
+ // Expand, and write result
+ templateString = templateString.replaceAll("<ClassName>", className);
+ templateString = templateString.replaceAll("<BaseClassName>", baseClassName);
+ templateString = templateString.replaceAll("<OperatorSymbol>", operatorSymbol);
+ writeFile(templateFile.lastModified(), expressionOutputDirectory, expressionClassesDirectory,
+ className, templateString);
+ }
+
+ private void generateFilterStringGroupColumnCompareTruncStringScalar(String[] tdesc) throws IOException {
+ String truncStringTypeName = tdesc[1];
+ String operatorName = tdesc[2];
+ String className = "FilterStringGroupCol" + operatorName + truncStringTypeName + "Scalar";
+ String baseClassName = "FilterStringGroupCol" + operatorName + "StringGroupScalarBase";
+ generateStringCompareTruncStringScalar(tdesc, className, baseClassName);
+ }
+
+ private void generateStringGroupColumnCompareStringGroupScalarBase(String[] tdesc) throws IOException {
+ String operatorName = tdesc[1];
+ String className = "StringGroupCol" + operatorName + "StringGroupScalarBase";
+ String operatorSymbol = tdesc[2];
+ // Read the template into a string;
+ File templateFile = new File(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(templateFile.lastModified(), expressionOutputDirectory, expressionClassesDirectory,
+ className, templateString);
+ }
+
+ private void generateStringGroupColumnCompareStringScalar(String[] tdesc) throws IOException {
+ String operatorName = tdesc[1];
+ String className = "StringGroupCol" + operatorName + "StringScalar";
+ String baseClassName = "StringGroupCol" + operatorName + "StringGroupScalarBase";
+ String operatorSymbol = tdesc[2];
+ // Read the template into a string;
+ File templateFile = new File(joinPath(this.expressionTemplateDirectory, tdesc[0] + ".txt"));
+ String templateString = readFile(templateFile);
+ // Expand, and write result
+ templateString = templateString.replaceAll("<ClassName>", className);
+ templateString = templateString.replaceAll("<BaseClassName>", baseClassName);
+ templateString = templateString.replaceAll("<OperatorSymbol>", operatorSymbol);
+ writeFile(templateFile.lastModified(), expressionOutputDirectory, expressionClassesDirectory,
+ className, templateString);
+ }
+
+ private void generateStringGroupColumnCompareTruncStringScalar(String[] tdesc) throws IOException {
+ String truncStringTypeName = tdesc[1];
+ String operatorName = tdesc[2];
+ String className = "StringGroupCol" + operatorName + truncStringTypeName + "Scalar";
+ String baseClassName = "StringGroupCol" + operatorName + "StringGroupScalarBase";
+ generateStringCompareTruncStringScalar(tdesc, className, baseClassName);
+ }
+
+ private void generateFilterStringGroupColumnCompareStringGroupColumn(String[] tdesc) throws IOException {
String operatorName = tdesc[1];
- String className = "FilterStringCol" + operatorName + "StringColumn";
+ String className = "FilterStringGroupCol" + operatorName + "StringGroupColumn";
generateStringColumnCompareScalar(tdesc, className);
}
- private void generateStringColumnCompareColumn(String[] tdesc) throws IOException {
+ private void generateStringGroupColumnCompareStringGroupColumn(String[] tdesc) throws IOException {
String operatorName = tdesc[1];
- String className = "StringCol" + operatorName + "StringColumn";
+ String className = "StringGroupCol" + operatorName + "StringGroupColumn";
generateStringColumnCompareScalar(tdesc, className);
}
@@ -941,15 +1182,42 @@ public class GenVectorCode extends Task
className, templateString);
}
+ private void generateStringCompareTruncStringScalar(String[] tdesc, String className, String baseClassName)
+ throws IOException {
+ String truncStringTypeName = tdesc[1];
+ String truncStringHiveType;
+ String truncStringHiveGetBytes;
+ if (truncStringTypeName == "Char") {
+ truncStringHiveType = "HiveChar";
+ truncStringHiveGetBytes = "getStrippedValue().getBytes()";
+ } else if (truncStringTypeName == "VarChar") {
+ truncStringHiveType = "HiveVarchar";
+ truncStringHiveGetBytes = "getValue().getBytes()";
+ } else {
+ throw new Error("Unsupported string type: " + truncStringTypeName);
+ }
+ String operatorSymbol = tdesc[3];
+ // Read the template into a string;
+ File templateFile = new File(joinPath(this.expressionTemplateDirectory, tdesc[0] + ".txt"));
+ String templateString = readFile(templateFile);
+ // Expand, and write result
+ templateString = templateString.replaceAll("<ClassName>", className);
+ templateString = templateString.replaceAll("<BaseClassName>", baseClassName);
+ templateString = templateString.replaceAll("<OperatorSymbol>", operatorSymbol);
+ templateString = templateString.replaceAll("<TruncStringTypeName>", truncStringTypeName);
+ templateString = templateString.replaceAll("<TruncStringHiveType>", truncStringHiveType);
+ templateString = templateString.replaceAll("<TruncStringHiveGetBytes>", truncStringHiveGetBytes);
+ writeFile(templateFile.lastModified(), expressionOutputDirectory, expressionClassesDirectory,
+ className, templateString);
+ }
+
private void generateFilterColumnCompareColumn(String[] tdesc) throws Exception {
- //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);
+ generateColumnCompareOperatorColumn(tdesc, true, className);
}
private void generateColumnUnaryMinus(String[] tdesc) throws Exception {
@@ -984,6 +1252,13 @@ public class GenVectorCode extends Task
templateString = templateString.replaceAll("<ClassName>", className);
templateString = templateString.replaceAll("<InputColumnVectorType>", inputColumnVectorType);
templateString = templateString.replaceAll("<OperandType>", operandType);
+ String vectorExprArgType = operandType;
+ if (operandType.equals("long")) {
+ // Let comparisons occur for DATE and TIMESTAMP, too.
+ vectorExprArgType = "int_datetime_family";
+ }
+ templateString = templateString.replaceAll("<VectorExprArgType>", vectorExprArgType);
+
writeFile(templateFile.lastModified(), expressionOutputDirectory, expressionClassesDirectory,
className, templateString);
}
@@ -1006,6 +1281,15 @@ public class GenVectorCode extends Task
templateString = templateString.replaceAll("<OperandType2>", operandType2);
templateString = templateString.replaceAll("<OperandType3>", operandType3);
templateString = templateString.replaceAll("<OutputColumnVectorType>", outputColumnVectorType);
+ String vectorExprArgType2 = operandType2;
+ String vectorExprArgType3 = operandType3;
+ if (operandType2.equals("long") && operandType3.equals("long")) {
+ // Let this work occur for DATE and TIMESTAMP, too.
+ vectorExprArgType2 = "int_datetime_family";
+ vectorExprArgType3 = "int_datetime_family";
+ }
+ templateString = templateString.replaceAll("<VectorExprArgType2>", vectorExprArgType2);
+ templateString = templateString.replaceAll("<VectorExprArgType3>", vectorExprArgType3);
writeFile(templateFile.lastModified(), expressionOutputDirectory, expressionClassesDirectory,
className, templateString);
}
@@ -1028,6 +1312,15 @@ public class GenVectorCode extends Task
templateString = templateString.replaceAll("<OperandType2>", operandType2);
templateString = templateString.replaceAll("<OperandType3>", operandType3);
templateString = templateString.replaceAll("<OutputColumnVectorType>", outputColumnVectorType);
+ String vectorExprArgType2 = operandType2;
+ String vectorExprArgType3 = operandType3;
+ if (operandType2.equals("long") && operandType3.equals("long")) {
+ // Let this work occur for DATE and TIMESTAMP, too.
+ vectorExprArgType2 = "int_datetime_family";
+ vectorExprArgType3 = "int_datetime_family";
+ }
+ templateString = templateString.replaceAll("<VectorExprArgType2>", vectorExprArgType2);
+ templateString = templateString.replaceAll("<VectorExprArgType3>", vectorExprArgType3);
writeFile(templateFile.lastModified(), expressionOutputDirectory, expressionClassesDirectory,
className, templateString);
}
@@ -1049,6 +1342,15 @@ public class GenVectorCode extends Task
templateString = templateString.replaceAll("<OperandType2>", operandType2);
templateString = templateString.replaceAll("<OperandType3>", operandType3);
templateString = templateString.replaceAll("<OutputColumnVectorType>", outputColumnVectorType);
+ String vectorExprArgType2 = operandType2;
+ String vectorExprArgType3 = operandType3;
+ if (operandType2.equals("long") && operandType3.equals("long")) {
+ // Let this work occur for DATE and TIMESTAMP, too.
+ vectorExprArgType2 = "int_datetime_family";
+ vectorExprArgType3 = "int_datetime_family";
+ }
+ templateString = templateString.replaceAll("<VectorExprArgType2>", vectorExprArgType2);
+ templateString = templateString.replaceAll("<VectorExprArgType3>", vectorExprArgType3);
writeFile(templateFile.lastModified(), expressionOutputDirectory, expressionClassesDirectory,
className, templateString);
}
@@ -1073,6 +1375,7 @@ public class GenVectorCode extends Task
}
// template, <ClassNamePrefix>, <ReturnType>, <OperandType>, <FuncName>, <OperandCast>, <ResultCast>
+ // <Cleanup> <VectorExprArgType>
private void generateColumnUnaryFunc(String[] tdesc) throws Exception {
String classNamePrefix = tdesc[1];
String operandType = tdesc[3];
@@ -1087,6 +1390,8 @@ public class GenVectorCode extends Task
String operandCast = tdesc[5];
String resultCast = tdesc[6];
String cleanup = tdesc[7];
+ String vectorExprArgType = tdesc[8].isEmpty() ? operandType : tdesc[8];
+
// Expand, and write result
templateString = templateString.replaceAll("<ClassName>", className);
templateString = templateString.replaceAll("<InputColumnVectorType>", inputColumnVectorType);
@@ -1097,6 +1402,7 @@ public class GenVectorCode extends Task
templateString = templateString.replaceAll("<OperandCast>", operandCast);
templateString = templateString.replaceAll("<ResultCast>", resultCast);
templateString = templateString.replaceAll("<Cleanup>", cleanup);
+ templateString = templateString.replaceAll("<VectorExprArgType>", vectorExprArgType);
writeFile(templateFile.lastModified(), expressionOutputDirectory, expressionClassesDirectory,
className, templateString);
}
@@ -1108,58 +1414,53 @@ public class GenVectorCode extends Task
String className = getCamelCaseType(operandType1)
+ "Col" + operatorName + getCamelCaseType(operandType2) + "Column";
String returnType = getArithmeticReturnType(operandType1, operandType2);
- generateColumnBinaryOperatorColumn(tdesc, returnType, className);
+ generateColumnArithmeticOperatorColumn(tdesc, returnType, className);
}
private void generateFilterColumnCompareScalar(String[] tdesc) throws Exception {
- //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);
+ generateColumnCompareOperatorScalar(tdesc, true, className);
}
private void generateFilterScalarCompareColumn(String[] tdesc) throws Exception {
- //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);
+ generateScalarCompareOperatorColumn(tdesc, true, className);
}
private void generateColumnCompareScalar(String[] tdesc) throws Exception {
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);
+ generateColumnCompareOperatorScalar(tdesc, false, className);
}
private void generateScalarCompareColumn(String[] tdesc) throws Exception {
String operatorName = tdesc[1];
String operandType1 = tdesc[2];
String operandType2 = tdesc[3];
- String returnType = "long";
String className = getCamelCaseType(operandType1)
+ "Scalar" + operatorName + getCamelCaseType(operandType2) + "Column";
- generateScalarBinaryOperatorColumn(tdesc, returnType, className);
+ generateScalarCompareOperatorColumn(tdesc, false, className);
}
- private void generateColumnBinaryOperatorColumn(String[] tdesc, String returnType,
+ private void generateColumnCompareOperatorColumn(String[] tdesc, boolean filter,
String className) throws Exception {
String operandType1 = tdesc[2];
String operandType2 = tdesc[3];
- String outputColumnVectorType = this.getColumnVectorType(
- returnType == null ? "long" : returnType);
String inputColumnVectorType1 = this.getColumnVectorType(operandType1);
String inputColumnVectorType2 = this.getColumnVectorType(operandType2);
+ String returnType = "long";
+ String outputColumnVectorType = this.getColumnVectorType(returnType);
String operatorSymbol = tdesc[4];
//Read the template into a string;
@@ -1174,16 +1475,25 @@ public class GenVectorCode extends Task
templateString = templateString.replaceAll("<OperandType2>", operandType2);
templateString = templateString.replaceAll("<ReturnType>", returnType);
templateString = templateString.replaceAll("<CamelReturnType>", getCamelCaseType(returnType));
+ String vectorExprArgType1 = operandType1;
+ String vectorExprArgType2 = operandType2;
+ if (operandType1.equals("long") && operandType2.equals("long")) {
+ // Let comparisons occur for DATE and TIMESTAMP, too.
+ vectorExprArgType1 = "int_datetime_family";
+ vectorExprArgType2 = "int_datetime_family";
+ }
+ templateString = templateString.replaceAll("<VectorExprArgType1>", vectorExprArgType1);
+ templateString = templateString.replaceAll("<VectorExprArgType2>", vectorExprArgType2);
writeFile(templateFile.lastModified(), expressionOutputDirectory, expressionClassesDirectory,
className, templateString);
- if(returnType==null){
+ if (filter) {
testCodeGen.addColumnColumnFilterTestCases(
className,
inputColumnVectorType1,
inputColumnVectorType2,
operatorSymbol);
- }else{
+ } else {
testCodeGen.addColumnColumnOperationTestCases(
className,
inputColumnVectorType1,
@@ -1192,13 +1502,44 @@ public class GenVectorCode extends Task
}
}
- private void generateColumnBinaryOperatorScalar(String[] tdesc, String returnType,
+ private void generateColumnArithmeticOperatorColumn(String[] tdesc, String returnType,
+ String className) throws Exception {
+ 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];
+
+ //Read the template into a string;
+ File templateFile = new File(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(templateFile.lastModified(), expressionOutputDirectory, expressionClassesDirectory,
+ className, templateString);
+
+ testCodeGen.addColumnColumnOperationTestCases(
+ className,
+ inputColumnVectorType1,
+ inputColumnVectorType2,
+ outputColumnVectorType);
+ }
+
+ private void generateColumnCompareOperatorScalar(String[] tdesc, boolean filter,
String className) throws Exception {
String operandType1 = tdesc[2];
String operandType2 = tdesc[3];
- String outputColumnVectorType = this.getColumnVectorType(
- returnType == null ? "long" : returnType);
String inputColumnVectorType = this.getColumnVectorType(operandType1);
+ String returnType = "long";
+ String outputColumnVectorType = this.getColumnVectorType(returnType);
String operatorSymbol = tdesc[4];
//Read the template into a string;
@@ -1211,10 +1552,20 @@ public class GenVectorCode extends Task
templateString = templateString.replaceAll("<OperandType1>", operandType1);
templateString = templateString.replaceAll("<OperandType2>", operandType2);
templateString = templateString.replaceAll("<ReturnType>", returnType);
+ templateString = templateString.replaceAll("<CamelReturnType>", getCamelCaseType(returnType));
+ String vectorExprArgType1 = operandType1;
+ String vectorExprArgType2 = operandType2;
+ if (operandType1.equals("long") && operandType2.equals("long")) {
+ // Let comparisons occur for DATE and TIMESTAMP, too.
+ vectorExprArgType1 = "int_datetime_family";
+ vectorExprArgType2 = "int_datetime_family";
+ }
+ templateString = templateString.replaceAll("<VectorExprArgType1>", vectorExprArgType1);
+ templateString = templateString.replaceAll("<VectorExprArgType2>", vectorExprArgType2);
writeFile(templateFile.lastModified(), expressionOutputDirectory, expressionClassesDirectory,
className, templateString);
- if(returnType==null) {
+ if (filter) {
testCodeGen.addColumnScalarFilterTestCases(
true,
className,
@@ -1231,13 +1582,42 @@ public class GenVectorCode extends Task
}
}
- private void generateScalarBinaryOperatorColumn(String[] tdesc, String returnType,
+ private void generateColumnArithmeticOperatorScalar(String[] tdesc, String returnType,
+ String className) throws Exception {
+ String operandType1 = tdesc[2];
+ String operandType2 = tdesc[3];
+ String outputColumnVectorType = this.getColumnVectorType(returnType);
+ String inputColumnVectorType = this.getColumnVectorType(operandType1);
+ String operatorSymbol = tdesc[4];
+
+ //Read the template into a string;
+ File templateFile = new File(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(templateFile.lastModified(), expressionOutputDirectory, expressionClassesDirectory,
+ className, templateString);
+
+ testCodeGen.addColumnScalarOperationTestCases(
+ true,
+ className,
+ inputColumnVectorType,
+ outputColumnVectorType,
+ operandType2);
+ }
+
+ private void generateScalarCompareOperatorColumn(String[] tdesc, boolean filter,
String className) throws Exception {
String operandType1 = tdesc[2];
String operandType2 = tdesc[3];
- String outputColumnVectorType = this.getColumnVectorType(
- returnType == null ? "long" : returnType);
+ String returnType = "long";
String inputColumnVectorType = this.getColumnVectorType(operandType2);
+ String outputColumnVectorType = this.getColumnVectorType(returnType);
String operatorSymbol = tdesc[4];
//Read the template into a string;
@@ -1251,10 +1631,19 @@ public class GenVectorCode extends Task
templateString = templateString.replaceAll("<OperandType2>", operandType2);
templateString = templateString.replaceAll("<ReturnType>", returnType);
templateString = templateString.replaceAll("<CamelReturnType>", getCamelCaseType(returnType));
+ String vectorExprArgType1 = operandType1;
+ String vectorExprArgType2 = operandType2;
+ if (operandType1.equals("long") && operandType2.equals("long")) {
+ // Let comparisons occur for DATE and TIMESTAMP, too.
+ vectorExprArgType1 = "int_datetime_family";
+ vectorExprArgType2 = "int_datetime_family";
+ }
+ templateString = templateString.replaceAll("<VectorExprArgType1>", vectorExprArgType1);
+ templateString = templateString.replaceAll("<VectorExprArgType2>", vectorExprArgType2);
writeFile(templateFile.lastModified(), expressionOutputDirectory, expressionClassesDirectory,
className, templateString);
- if(returnType==null) {
+ if (filter) {
testCodeGen.addColumnScalarFilterTestCases(
false,
className,
@@ -1269,7 +1658,38 @@ public class GenVectorCode extends Task
outputColumnVectorType,
operandType1);
}
- }
+ }
+
+ private void generateScalarArithmeticOperatorColumn(String[] tdesc, String returnType,
+ String className) throws Exception {
+ String operandType1 = tdesc[2];
+ String operandType2 = tdesc[3];
+ String outputColumnVectorType = this.getColumnVectorType(
+ returnType == null ? "long" : returnType);
+ String inputColumnVectorType = this.getColumnVectorType(operandType2);
+ String operatorSymbol = tdesc[4];
+
+ //Read the template into a string;
+ File templateFile = new File(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);
+ templateString = templateString.replaceAll("<CamelReturnType>", getCamelCaseType(returnType));
+ writeFile(templateFile.lastModified(), expressionOutputDirectory, expressionClassesDirectory,
+ className, templateString);
+
+ testCodeGen.addColumnScalarOperationTestCases(
+ false,
+ className,
+ inputColumnVectorType,
+ outputColumnVectorType,
+ operandType1);
+ }
//Binary arithmetic operator
private void generateColumnArithmeticScalar(String[] tdesc) throws Exception {
@@ -1279,7 +1699,7 @@ public class GenVectorCode extends Task
String className = getCamelCaseType(operandType1)
+ "Col" + operatorName + getCamelCaseType(operandType2) + "Scalar";
String returnType = getArithmeticReturnType(operandType1, operandType2);
- generateColumnBinaryOperatorScalar(tdesc, returnType, className);
+ generateColumnArithmeticOperatorScalar(tdesc, returnType, className);
}
private void generateColumnArithmeticScalarDecimal(String[] tdesc) throws IOException {
@@ -1373,7 +1793,7 @@ public class GenVectorCode extends Task
String className = getCamelCaseType(operandType1)
+ "Scalar" + operatorName + getCamelCaseType(operandType2) + "Column";
String returnType = getArithmeticReturnType(operandType1, operandType2);
- generateScalarBinaryOperatorColumn(tdesc, returnType, className);
+ generateScalarArithmeticOperatorColumn(tdesc, returnType, className);
}
private void generateFilterDecimalColumnCompareScalar(String[] tdesc) throws IOException {
Modified: hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/ColumnCompareColumn.txt
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/ColumnCompareColumn.txt?rev=1622729&r1=1622728&r2=1622729&view=diff
==============================================================================
--- hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/ColumnCompareColumn.txt (original)
+++ hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/ColumnCompareColumn.txt Fri Sep 5 15:59:47 2014
@@ -163,8 +163,8 @@ public class <ClassName> extends VectorE
VectorExpressionDescriptor.Mode.PROJECTION)
.setNumArguments(2)
.setArgumentTypes(
- VectorExpressionDescriptor.ArgumentType.getType("<OperandType1>"),
- VectorExpressionDescriptor.ArgumentType.getType("<OperandType2>"))
+ VectorExpressionDescriptor.ArgumentType.getType("<VectorExprArgType1>"),
+ VectorExpressionDescriptor.ArgumentType.getType("<VectorExprArgType2>"))
.setInputExpressionTypes(
VectorExpressionDescriptor.InputExpressionType.COLUMN,
VectorExpressionDescriptor.InputExpressionType.COLUMN).build();
Modified: hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/ColumnCompareScalar.txt
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/ColumnCompareScalar.txt?rev=1622729&r1=1622728&r2=1622729&view=diff
==============================================================================
--- hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/ColumnCompareScalar.txt (original)
+++ hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/ColumnCompareScalar.txt Fri Sep 5 15:59:47 2014
@@ -155,8 +155,8 @@ public class <ClassName> extends VectorE
VectorExpressionDescriptor.Mode.PROJECTION)
.setNumArguments(2)
.setArgumentTypes(
- VectorExpressionDescriptor.ArgumentType.getType("<OperandType1>"),
- VectorExpressionDescriptor.ArgumentType.getType("<OperandType2>"))
+ VectorExpressionDescriptor.ArgumentType.getType("<VectorExprArgType1>"),
+ VectorExpressionDescriptor.ArgumentType.getType("<VectorExprArgType2>"))
.setInputExpressionTypes(
VectorExpressionDescriptor.InputExpressionType.COLUMN,
VectorExpressionDescriptor.InputExpressionType.SCALAR).build();
Modified: hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/ColumnUnaryFunc.txt
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/ColumnUnaryFunc.txt?rev=1622729&r1=1622728&r2=1622729&view=diff
==============================================================================
--- hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/ColumnUnaryFunc.txt (original)
+++ hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/ColumnUnaryFunc.txt Fri Sep 5 15:59:47 2014
@@ -128,7 +128,7 @@ public class <ClassName> extends VectorE
VectorExpressionDescriptor.Mode.PROJECTION)
.setNumArguments(1)
.setArgumentTypes(
- VectorExpressionDescriptor.ArgumentType.getType("<OperandType>"))
+ VectorExpressionDescriptor.ArgumentType.getType("<VectorExprArgType>"))
.setInputExpressionTypes(
VectorExpressionDescriptor.InputExpressionType.COLUMN).build();
}
Modified: hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/FilterColumnCompareColumn.txt
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/FilterColumnCompareColumn.txt?rev=1622729&r1=1622728&r2=1622729&view=diff
==============================================================================
--- hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/FilterColumnCompareColumn.txt (original)
+++ hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/FilterColumnCompareColumn.txt Fri Sep 5 15:59:47 2014
@@ -188,8 +188,8 @@ public class <ClassName> extends VectorE
VectorExpressionDescriptor.Mode.FILTER)
.setNumArguments(2)
.setArgumentTypes(
- VectorExpressionDescriptor.ArgumentType.getType("<OperandType1>"),
- VectorExpressionDescriptor.ArgumentType.getType("<OperandType2>"))
+ VectorExpressionDescriptor.ArgumentType.getType("<VectorExprArgType1>"),
+ VectorExpressionDescriptor.ArgumentType.getType("<VectorExprArgType2>"))
.setInputExpressionTypes(
VectorExpressionDescriptor.InputExpressionType.COLUMN,
VectorExpressionDescriptor.InputExpressionType.COLUMN).build();
Modified: hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/FilterColumnCompareScalar.txt
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/FilterColumnCompareScalar.txt?rev=1622729&r1=1622728&r2=1622729&view=diff
==============================================================================
--- hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/FilterColumnCompareScalar.txt (original)
+++ hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/FilterColumnCompareScalar.txt Fri Sep 5 15:59:47 2014
@@ -164,8 +164,8 @@ public class <ClassName> extends VectorE
VectorExpressionDescriptor.Mode.FILTER)
.setNumArguments(2)
.setArgumentTypes(
- VectorExpressionDescriptor.ArgumentType.getType("<OperandType1>"),
- VectorExpressionDescriptor.ArgumentType.getType("<OperandType2>"))
+ VectorExpressionDescriptor.ArgumentType.getType("<VectorExprArgType1>"),
+ VectorExpressionDescriptor.ArgumentType.getType("<VectorExprArgType2>"))
.setInputExpressionTypes(
VectorExpressionDescriptor.InputExpressionType.COLUMN,
VectorExpressionDescriptor.InputExpressionType.SCALAR).build();
Modified: hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/FilterScalarCompareColumn.txt
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/FilterScalarCompareColumn.txt?rev=1622729&r1=1622728&r2=1622729&view=diff
==============================================================================
--- hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/FilterScalarCompareColumn.txt (original)
+++ hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/FilterScalarCompareColumn.txt Fri Sep 5 15:59:47 2014
@@ -164,8 +164,8 @@ public class <ClassName> extends VectorE
VectorExpressionDescriptor.Mode.FILTER)
.setNumArguments(2)
.setArgumentTypes(
- VectorExpressionDescriptor.ArgumentType.getType("<OperandType1>"),
- VectorExpressionDescriptor.ArgumentType.getType("<OperandType2>"))
+ VectorExpressionDescriptor.ArgumentType.getType("<VectorExprArgType1>"),
+ VectorExpressionDescriptor.ArgumentType.getType("<VectorExprArgType2>"))
.setInputExpressionTypes(
VectorExpressionDescriptor.InputExpressionType.SCALAR,
VectorExpressionDescriptor.InputExpressionType.COLUMN).build();
Modified: hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/FilterStringColumnBetween.txt
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/FilterStringColumnBetween.txt?rev=1622729&r1=1622728&r2=1622729&view=diff
==============================================================================
--- hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/FilterStringColumnBetween.txt (original)
+++ hive/trunk/ql/src/gen/vectorization/ExpressionTemplates/FilterStringColumnBetween.txt Fri Sep 5 15:59:47 2014
@@ -184,9 +184,9 @@ public class <ClassName> extends VectorE
VectorExpressionDescriptor.Mode.FILTER)
.setNumArguments(3)
.setArgumentTypes(
- VectorExpressionDescriptor.ArgumentType.getType("string"),
- VectorExpressionDescriptor.ArgumentType.getType("string"),
- VectorExpressionDescriptor.ArgumentType.getType("string"))
+ VectorExpressionDescriptor.ArgumentType.STRING,
+ VectorExpressionDescriptor.ArgumentType.STRING,
+ VectorExpressionDescriptor.ArgumentType.STRING)
.setInputExpressionTypes(
VectorExpressionDescriptor.InputExpressionType.COLUMN,
VectorExpressionDescriptor.InputExpressionType.SCALAR,