equalExprDesc.setTypeInfo(TypeInfoFactory.booleanTypeInfo); equalExprDesc.setGenericUDF(udf); List<ExprNodeDesc> children1 = new ArrayList<ExprNodeDesc>(2);
@Test public void testTimeStampUdfs() throws HiveException { ExprNodeGenericFuncDesc tsFuncExpr = new ExprNodeGenericFuncDesc(); tsFuncExpr.setTypeInfo(TypeInfoFactory.intTypeInfo); ExprNodeColumnDesc colDesc1 = new ExprNodeColumnDesc( TypeInfoFactory.timestampTypeInfo, "a", "table", false); List<ExprNodeDesc> children = new ArrayList<ExprNodeDesc>(); children.add(colDesc1); List<String> columns = new ArrayList<String>(); columns.add("b"); columns.add("a"); VectorizationContext vc = new VectorizationContext("name", columns); //UDFYear GenericUDFBridge gudfBridge = new GenericUDFBridge("year", false, UDFYear.class.getName()); tsFuncExpr.setGenericUDF(gudfBridge); tsFuncExpr.setChildren(children); VectorExpression ve = vc.getVectorExpression(tsFuncExpr); Assert.assertEquals(VectorUDFYearTimestamp.class, ve.getClass()); //GenericUDFToUnixTimeStamp GenericUDFToUnixTimeStamp gudf = new GenericUDFToUnixTimeStamp(); tsFuncExpr.setGenericUDF(gudf); tsFuncExpr.setTypeInfo(TypeInfoFactory.longTypeInfo); ve = vc.getVectorExpression(tsFuncExpr); Assert.assertEquals(VectorUDFUnixTimeStampTimestamp.class, ve.getClass()); }
expr.setTypeInfo(childExpr.getTypeInfo()); expr.setGenericUDF(childExpr.getGenericUDF()); expr.setChildren(newChildren);
@Test public void testBooleanColumnCompareBooleanScalar() throws HiveException { ExprNodeGenericFuncDesc colEqualScalar = new ExprNodeGenericFuncDesc(); GenericUDFOPEqual gudf = new GenericUDFOPEqual(); colEqualScalar.setGenericUDF(gudf); List<ExprNodeDesc> children = new ArrayList<ExprNodeDesc>(2); ExprNodeConstantDesc constDesc = new ExprNodeConstantDesc(TypeInfoFactory.booleanTypeInfo, 20); ExprNodeColumnDesc colDesc = new ExprNodeColumnDesc(Boolean.class, "a", "table", false); children.add(colDesc); children.add(constDesc); colEqualScalar.setChildren(children); colEqualScalar.setTypeInfo(TypeInfoFactory.booleanTypeInfo); List<String> columns = new ArrayList<String>(); columns.add("a"); VectorizationContext vc = new VectorizationContext("name", columns); VectorExpression ve = vc.getVectorExpression(colEqualScalar, VectorExpressionDescriptor.Mode.PROJECTION); assertEquals(LongColEqualLongScalar.class, ve.getClass()); }
greaterExprDesc.setTypeInfo(TypeInfoFactory.booleanTypeInfo); greaterExprDesc.setGenericUDF(udf); List<ExprNodeDesc> children1 = new ArrayList<ExprNodeDesc>(2); notExpr.setTypeInfo(TypeInfoFactory.booleanTypeInfo); GenericUDFOPNot notUdf = new GenericUDFOPNot(); notExpr.setGenericUDF(notUdf);
@Test public void testValidateNestedExpressions() { ExprNodeColumnDesc col1Expr = new ExprNodeColumnDesc(Integer.class, "col1", "table", false); ExprNodeConstantDesc constDesc = new ExprNodeConstantDesc(new Integer(10)); GenericUDFOPGreaterThan udf = new GenericUDFOPGreaterThan(); ExprNodeGenericFuncDesc greaterExprDesc = new ExprNodeGenericFuncDesc(); greaterExprDesc.setTypeInfo(TypeInfoFactory.booleanTypeInfo); greaterExprDesc.setGenericUDF(udf); List<ExprNodeDesc> children1 = new ArrayList<ExprNodeDesc>(2); children1.add(col1Expr); children1.add(constDesc); greaterExprDesc.setChildren(children1); FakeGenericUDF udf2 = new FakeGenericUDF(); ExprNodeGenericFuncDesc nonSupportedExpr = new ExprNodeGenericFuncDesc(); nonSupportedExpr.setTypeInfo(TypeInfoFactory.booleanTypeInfo); nonSupportedExpr.setGenericUDF(udf2); GenericUDFOPAnd andUdf = new GenericUDFOPAnd(); ExprNodeGenericFuncDesc andExprDesc = new ExprNodeGenericFuncDesc(); andExprDesc.setTypeInfo(TypeInfoFactory.booleanTypeInfo); andExprDesc.setGenericUDF(andUdf); List<ExprNodeDesc> children3 = new ArrayList<ExprNodeDesc>(2); children3.add(greaterExprDesc); children3.add(nonSupportedExpr); andExprDesc.setChildren(children3); Vectorizer v = new Vectorizer(); v.testSetCurrentBaseWork(new MapWork()); Assert.assertTrue(v.validateExprNodeDesc(andExprDesc, "test", VectorExpressionDescriptor.Mode.FILTER, false)); }
@Test public void testNotNullExpressions() throws HiveException { ExprNodeColumnDesc col1Expr = new ExprNodeColumnDesc(Integer.class, "col1", "table", false); ExprNodeConstantDesc constDesc = new ExprNodeConstantDesc(new Integer(10)); GenericUDFOPGreaterThan udf = new GenericUDFOPGreaterThan(); ExprNodeGenericFuncDesc greaterExprDesc = new ExprNodeGenericFuncDesc(); greaterExprDesc.setTypeInfo(TypeInfoFactory.booleanTypeInfo); greaterExprDesc.setGenericUDF(udf); List<ExprNodeDesc> children1 = new ArrayList<ExprNodeDesc>(2); children1.add(col1Expr); children1.add(constDesc); greaterExprDesc.setChildren(children1); ExprNodeGenericFuncDesc isNotNullExpr = new ExprNodeGenericFuncDesc(); isNotNullExpr.setTypeInfo(TypeInfoFactory.booleanTypeInfo); GenericUDFOPNotNull notNullUdf = new GenericUDFOPNotNull(); isNotNullExpr.setGenericUDF(notNullUdf); List<ExprNodeDesc> childOfNot = new ArrayList<ExprNodeDesc>(); childOfNot.add(greaterExprDesc); isNotNullExpr.setChildren(childOfNot); List<String> columns = new ArrayList<String>(); columns.add("col1"); columns.add("col2"); VectorizationContext vc = new VectorizationContext("name", columns); VectorExpression ve = vc.getVectorExpression(isNotNullExpr, VectorExpressionDescriptor.Mode.FILTER); assertEquals(ve.getClass(), SelectColumnIsNotNull.class); assertEquals(ve.getChildExpressions()[0].getClass(), LongColGreaterLongScalar.class); ve = vc.getVectorExpression(isNotNullExpr, VectorExpressionDescriptor.Mode.PROJECTION); assertEquals(ve.getClass(), IsNotNull.class); assertEquals(ve.getChildExpressions()[0].getClass(), LongColGreaterLongScalar.class); }
expr.setTypeInfo(childExpr.getTypeInfo()); expr.setGenericUDF(childExpr.getGenericUDF()); expr.setChildren(newChildren);
greaterExprDesc.setTypeInfo(TypeInfoFactory.booleanTypeInfo); greaterExprDesc.setGenericUDF(udf); List<ExprNodeDesc> children1 = new ArrayList<ExprNodeDesc>(2); lessExprDesc.setTypeInfo(TypeInfoFactory.booleanTypeInfo); lessExprDesc.setGenericUDF(udf2); List<ExprNodeDesc> children2 = new ArrayList<ExprNodeDesc>(2); andExprDesc.setTypeInfo(TypeInfoFactory.booleanTypeInfo); andExprDesc.setGenericUDF(andUdf); List<ExprNodeDesc> children3 = new ArrayList<ExprNodeDesc>(2); orExprDesc.setTypeInfo(TypeInfoFactory.booleanTypeInfo); orExprDesc.setGenericUDF(orUdf); List<ExprNodeDesc> children4 = new ArrayList<ExprNodeDesc>(2);
greaterExprDesc.setTypeInfo(TypeInfoFactory.booleanTypeInfo); greaterExprDesc.setGenericUDF(udf); List<ExprNodeDesc> children1 = new ArrayList<ExprNodeDesc>(2); lessExprDesc.setTypeInfo(TypeInfoFactory.booleanTypeInfo); lessExprDesc.setGenericUDF(udf2); List<ExprNodeDesc> children2 = new ArrayList<ExprNodeDesc>(2); greaterExprDesc3.setTypeInfo(TypeInfoFactory.booleanTypeInfo); greaterExprDesc3.setGenericUDF(udf3); List<ExprNodeDesc> children3 = new ArrayList<ExprNodeDesc>(2); andExprDesc.setTypeInfo(TypeInfoFactory.booleanTypeInfo); andExprDesc.setGenericUDF(andUdf); List<ExprNodeDesc> children4 = new ArrayList<ExprNodeDesc>(2); orExprDesc.setTypeInfo(TypeInfoFactory.booleanTypeInfo); orExprDesc.setGenericUDF(orUdf); List<ExprNodeDesc> children5 = new ArrayList<ExprNodeDesc>(2);
greaterExprDesc.setTypeInfo(TypeInfoFactory.booleanTypeInfo); greaterExprDesc.setGenericUDF(udf); List<ExprNodeDesc> children1 = new ArrayList<ExprNodeDesc>(2); isNullExpr.setTypeInfo(TypeInfoFactory.booleanTypeInfo); GenericUDFOPNull isNullUdf = new GenericUDFOPNull(); isNullExpr.setGenericUDF(isNullUdf);
children.add(colDesc2); plusDesc.setChildren(children); plusDesc.setTypeInfo(TypeInfoFactory.longTypeInfo);
inBloomFilterExpr.setTypeInfo(TypeInfoFactory.booleanTypeInfo); inBloomFilterExpr.setGenericUDF(inBloomFilterUdf); List<ExprNodeDesc> children1 = new ArrayList<ExprNodeDesc>(2);
@Test public void testUnaryStringExpressions() throws HiveException { ExprNodeGenericFuncDesc stringUnary = new ExprNodeGenericFuncDesc(); stringUnary.setTypeInfo(TypeInfoFactory.stringTypeInfo); ExprNodeColumnDesc colDesc = new ExprNodeColumnDesc(String.class, "a", "table", false); List<ExprNodeDesc> children = new ArrayList<ExprNodeDesc>(); anotherUnary.setTypeInfo(TypeInfoFactory.stringTypeInfo); List<ExprNodeDesc> children2 = new ArrayList<ExprNodeDesc>(); children2.add(stringUnary);
@Test public void testExprNodeBetweenWithDynamicValue() { ExprNodeDesc notBetween = new ExprNodeConstantDesc(TypeInfoFactory.booleanTypeInfo, Boolean.FALSE); ExprNodeColumnDesc colExpr = new ExprNodeColumnDesc(String.class, "col1", "table", false); ExprNodeDesc minExpr = new ExprNodeDynamicValueDesc(new DynamicValue("id1", TypeInfoFactory.stringTypeInfo)); ExprNodeDesc maxExpr = new ExprNodeDynamicValueDesc(new DynamicValue("id2", TypeInfoFactory.stringTypeInfo)); ExprNodeGenericFuncDesc betweenExpr = new ExprNodeGenericFuncDesc(); GenericUDF betweenUdf = new GenericUDFBetween(); betweenExpr.setTypeInfo(TypeInfoFactory.booleanTypeInfo); betweenExpr.setGenericUDF(betweenUdf); List<ExprNodeDesc> children1 = new ArrayList<ExprNodeDesc>(2); children1.add(notBetween); children1.add(colExpr); children1.add(minExpr); children1.add(maxExpr); betweenExpr.setChildren(children1); Vectorizer v = new Vectorizer(); v.testSetCurrentBaseWork(new MapWork()); boolean valid = v.validateExprNodeDesc(betweenExpr, "Test", Mode.FILTER, false); Assert.assertTrue(valid); } }
greaterExprDesc.setTypeInfo(TypeInfoFactory.booleanTypeInfo); greaterExprDesc.setGenericUDF(udf); List<ExprNodeDesc> children1 = new ArrayList<ExprNodeDesc>(2); andExprDesc.setTypeInfo(TypeInfoFactory.booleanTypeInfo); andExprDesc.setGenericUDF(andUdf); List<ExprNodeDesc> children3 = new ArrayList<ExprNodeDesc>(2); orExprDesc.setTypeInfo(TypeInfoFactory.booleanTypeInfo); orExprDesc.setGenericUDF(orUdf); List<ExprNodeDesc> children4 = new ArrayList<ExprNodeDesc>(2);
@Test public void testMathFunctions() throws HiveException { ExprNodeGenericFuncDesc mathFuncExpr = new ExprNodeGenericFuncDesc(); mathFuncExpr.setTypeInfo(TypeInfoFactory.doubleTypeInfo); ExprNodeColumnDesc colDesc1 = new ExprNodeColumnDesc(Integer.class, "a", "table", false); ExprNodeColumnDesc colDesc2 = new ExprNodeColumnDesc(Double.class, "b", "table", false);
columns.add("col3"); VectorizationContext vc = new VectorizationContext("name", columns); exprDesc.setTypeInfo(TypeInfoFactory.longTypeInfo); VectorExpression ve = vc.getVectorExpression(exprDesc); assertTrue(ve instanceof IfExprLongColumnLongColumn); exprDesc.setTypeInfo(TypeInfoFactory.doubleTypeInfo); ve = vc.getVectorExpression(exprDesc); assertTrue(ve instanceof IfExprDoubleColumnDoubleColumn); exprDesc.setTypeInfo(TypeInfoFactory.timestampTypeInfo); ve = vc.getVectorExpression(exprDesc); assertTrue(ve instanceof IfExprTimestampColumnColumn); f.setTypeInfo(TypeInfoFactory.timestampTypeInfo); List<ExprNodeDesc> children2 = new ArrayList<ExprNodeDesc>(); f.setChildren(children2); exprDesc.setTypeInfo(TypeInfoFactory.booleanTypeInfo); ve = vc.getVectorExpression(exprDesc); assertTrue(ve instanceof IfExprLongColumnLongColumn); exprDesc.setTypeInfo(TypeInfoFactory.stringTypeInfo); ve = vc.getVectorExpression(exprDesc); assertTrue(ve instanceof IfExprStringGroupColumnStringGroupColumn); children1.set(2, col3Expr); ve = vc.getVectorExpression(exprDesc); exprDesc.setTypeInfo(charTypeInfo);
sumExpr.setTypeInfo(TypeInfoFactory.intTypeInfo); sumExpr.setGenericUDF(udf1); ExprNodeGenericFuncDesc minusExpr = new ExprNodeGenericFuncDesc(); minusExpr.setTypeInfo(TypeInfoFactory.intTypeInfo); minusExpr.setGenericUDF(udf2); ExprNodeGenericFuncDesc multiplyExpr = new ExprNodeGenericFuncDesc(); multiplyExpr.setTypeInfo(TypeInfoFactory.intTypeInfo); multiplyExpr.setGenericUDF(udf3); ExprNodeGenericFuncDesc sum2Expr = new ExprNodeGenericFuncDesc(); sum2Expr.setTypeInfo(TypeInfoFactory.intTypeInfo); sum2Expr.setGenericUDF(udf4); ExprNodeGenericFuncDesc modExpr = new ExprNodeGenericFuncDesc(); modExpr.setTypeInfo(TypeInfoFactory.intTypeInfo); modExpr.setGenericUDF(udf5);