use of org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPGreaterThan in project mongo-hadoop by mongodb.
the class MongoStorageHandlerTest method testDecomposePredicate.
@Test
public void testDecomposePredicate() throws SerDeException {
BSONSerDe serde = new BSONSerDe();
Configuration conf = new Configuration();
Properties tableProperties = new Properties();
// Set table columns.
tableProperties.setProperty(serdeConstants.LIST_COLUMNS, "id,i,j");
tableProperties.setProperty(serdeConstants.LIST_COLUMN_TYPES, "string,int,int");
serde.initialize(conf, tableProperties);
// Build a query.
// WHERE i > 20
GenericUDFOPGreaterThan gt = new GenericUDFOPGreaterThan();
ExprNodeDesc[] children = { new ExprNodeColumnDesc(new SimpleMockColumnInfo("i")), new ExprNodeConstantDesc(20) };
ExprNodeGenericFuncDesc expr = new ExprNodeGenericFuncDesc(TypeInfoFactory.booleanTypeInfo, gt, Arrays.asList(children));
HiveStoragePredicateHandler.DecomposedPredicate decomposed = msh.decomposePredicate(null, serde, expr);
assertNull(decomposed.residualPredicate);
assertEquals(expr.getExprString(), decomposed.pushedPredicate.getExprString());
}
use of org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPGreaterThan in project mongo-hadoop by mongodb.
the class MongoStorageHandlerTest method testDecomposePredicateUnrecognizedOps.
@Test
public void testDecomposePredicateUnrecognizedOps() throws SerDeException {
BSONSerDe serde = new BSONSerDe();
Configuration conf = new Configuration();
Properties tableProperties = new Properties();
// Set table columns.
tableProperties.setProperty(serdeConstants.LIST_COLUMNS, "id,i,j");
tableProperties.setProperty(serdeConstants.LIST_COLUMN_TYPES, "string,int,int");
serde.initialize(conf, tableProperties);
// Build a query.
// WHERE i > 20 AND j IS BETWEEN 1 AND 10
GenericUDFOPGreaterThan gt = new GenericUDFOPGreaterThan();
ExprNodeDesc[] children = { new ExprNodeColumnDesc(new SimpleMockColumnInfo("i")), new ExprNodeConstantDesc(20) };
ExprNodeGenericFuncDesc iGt20 = new ExprNodeGenericFuncDesc(TypeInfoFactory.booleanTypeInfo, gt, Arrays.asList(children));
GenericUDFBetween between = new GenericUDFBetween();
ExprNodeDesc[] betweenChildren = { new ExprNodeConstantDesc(false), new ExprNodeColumnDesc(new SimpleMockColumnInfo("j")), new ExprNodeConstantDesc(1), new ExprNodeConstantDesc(10) };
ExprNodeGenericFuncDesc jBetween1And10 = new ExprNodeGenericFuncDesc(TypeInfoFactory.booleanTypeInfo, between, Arrays.asList(betweenChildren));
ExprNodeDesc[] exprChildren = { iGt20, jBetween1And10 };
ExprNodeGenericFuncDesc expr = new ExprNodeGenericFuncDesc(TypeInfoFactory.booleanTypeInfo, new GenericUDFOPAnd(), Arrays.asList(exprChildren));
HiveStoragePredicateHandler.DecomposedPredicate decomposed = msh.decomposePredicate(null, serde, expr);
assertEquals(jBetween1And10.getExprString(), decomposed.residualPredicate.getExprString());
assertEquals(iGt20.getExprString(), decomposed.pushedPredicate.getExprString());
}
use of org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPGreaterThan in project hive by apache.
the class TestVectorizationContext method testFilterStringColCompareStringColumnExpressions.
@Test
public void testFilterStringColCompareStringColumnExpressions() throws HiveException {
// Strings test
ExprNodeColumnDesc col1Expr = new ExprNodeColumnDesc(String.class, "col1", "table", false);
ExprNodeColumnDesc col2Expr = new ExprNodeColumnDesc(String.class, "col2", "table", false);
GenericUDFOPGreaterThan udf = new GenericUDFOPGreaterThan();
ExprNodeGenericFuncDesc exprDesc = new ExprNodeGenericFuncDesc();
exprDesc.setGenericUDF(udf);
List<ExprNodeDesc> children1 = new ArrayList<ExprNodeDesc>(2);
children1.add(col1Expr);
children1.add(col2Expr);
exprDesc.setChildren(children1);
List<String> columns = new ArrayList<String>();
columns.add("col0");
columns.add("col1");
columns.add("col2");
VectorizationContext vc = new VectorizationContext("name", columns);
VectorExpression ve = vc.getVectorExpression(exprDesc, VectorExpressionDescriptor.Mode.FILTER);
assertTrue(ve instanceof FilterStringGroupColGreaterStringGroupColumn);
// 2 CHAR test
CharTypeInfo charTypeInfo = new CharTypeInfo(10);
col1Expr = new ExprNodeColumnDesc(charTypeInfo, "col1", "table", false);
col2Expr = new ExprNodeColumnDesc(charTypeInfo, "col2", "table", false);
udf = new GenericUDFOPGreaterThan();
exprDesc = new ExprNodeGenericFuncDesc();
exprDesc.setGenericUDF(udf);
children1 = new ArrayList<ExprNodeDesc>(2);
children1.add(col1Expr);
children1.add(col2Expr);
exprDesc.setChildren(children1);
vc = new VectorizationContext("name", columns);
ve = vc.getVectorExpression(exprDesc, VectorExpressionDescriptor.Mode.FILTER);
assertTrue(ve instanceof FilterStringGroupColGreaterStringGroupColumn);
// 2 VARCHAR test
VarcharTypeInfo varcharTypeInfo = new VarcharTypeInfo(10);
col1Expr = new ExprNodeColumnDesc(varcharTypeInfo, "col1", "table", false);
col2Expr = new ExprNodeColumnDesc(varcharTypeInfo, "col2", "table", false);
udf = new GenericUDFOPGreaterThan();
exprDesc = new ExprNodeGenericFuncDesc();
exprDesc.setGenericUDF(udf);
children1 = new ArrayList<ExprNodeDesc>(2);
children1.add(col1Expr);
children1.add(col2Expr);
exprDesc.setChildren(children1);
vc = new VectorizationContext("name", columns);
ve = vc.getVectorExpression(exprDesc, VectorExpressionDescriptor.Mode.FILTER);
assertTrue(ve instanceof FilterStringGroupColGreaterStringGroupColumn);
// Some mix tests (STRING, CHAR), (VARCHAR, CHAR), (VARCHAR, STRING)...
col1Expr = new ExprNodeColumnDesc(String.class, "col1", "table", false);
col2Expr = new ExprNodeColumnDesc(charTypeInfo, "col2", "table", false);
udf = new GenericUDFOPGreaterThan();
exprDesc = new ExprNodeGenericFuncDesc();
exprDesc.setGenericUDF(udf);
children1 = new ArrayList<ExprNodeDesc>(2);
children1.add(col1Expr);
children1.add(col2Expr);
exprDesc.setChildren(children1);
vc = new VectorizationContext("name", columns);
ve = vc.getVectorExpression(exprDesc, VectorExpressionDescriptor.Mode.FILTER);
assertTrue(ve instanceof FilterStringGroupColGreaterStringGroupColumn);
col1Expr = new ExprNodeColumnDesc(varcharTypeInfo, "col1", "table", false);
col2Expr = new ExprNodeColumnDesc(charTypeInfo, "col2", "table", false);
udf = new GenericUDFOPGreaterThan();
exprDesc = new ExprNodeGenericFuncDesc();
exprDesc.setGenericUDF(udf);
children1 = new ArrayList<ExprNodeDesc>(2);
children1.add(col1Expr);
children1.add(col2Expr);
exprDesc.setChildren(children1);
vc = new VectorizationContext("name", columns);
ve = vc.getVectorExpression(exprDesc, VectorExpressionDescriptor.Mode.FILTER);
assertTrue(ve instanceof FilterStringGroupColGreaterStringGroupColumn);
col1Expr = new ExprNodeColumnDesc(varcharTypeInfo, "col1", "table", false);
col2Expr = new ExprNodeColumnDesc(String.class, "col2", "table", false);
udf = new GenericUDFOPGreaterThan();
exprDesc = new ExprNodeGenericFuncDesc();
exprDesc.setGenericUDF(udf);
children1 = new ArrayList<ExprNodeDesc>(2);
children1.add(col1Expr);
children1.add(col2Expr);
exprDesc.setChildren(children1);
vc = new VectorizationContext("name", columns);
ve = vc.getVectorExpression(exprDesc, VectorExpressionDescriptor.Mode.FILTER);
assertTrue(ve instanceof FilterStringGroupColGreaterStringGroupColumn);
}
use of org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPGreaterThan in project hive by apache.
the class TestVectorizationContext method testStringFilterExpressions.
@Test
public void testStringFilterExpressions() throws HiveException {
ExprNodeColumnDesc col1Expr = new ExprNodeColumnDesc(String.class, "col1", "table", false);
ExprNodeConstantDesc constDesc = new ExprNodeConstantDesc("Alpha");
GenericUDFOPGreaterThan udf = new GenericUDFOPGreaterThan();
ExprNodeGenericFuncDesc exprDesc = new ExprNodeGenericFuncDesc();
exprDesc.setGenericUDF(udf);
List<ExprNodeDesc> children1 = new ArrayList<ExprNodeDesc>(2);
children1.add(col1Expr);
children1.add(constDesc);
exprDesc.setChildren(children1);
List<String> columns = new ArrayList<String>();
columns.add("col0");
columns.add("col1");
columns.add("col2");
VectorizationContext vc = new VectorizationContext("name", columns);
VectorExpression ve = vc.getVectorExpression(exprDesc, VectorExpressionDescriptor.Mode.FILTER);
assertTrue(ve instanceof FilterStringGroupColGreaterStringScalar);
}
use of org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPGreaterThan in project hive by apache.
the class TestVectorizationContext method testVectorizeAndOrProjectionExpression.
@Test
public void testVectorizeAndOrProjectionExpression() 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);
ExprNodeColumnDesc col2Expr = new ExprNodeColumnDesc(Boolean.class, "col2", "table", false);
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(col2Expr);
andExprDesc.setChildren(children3);
List<String> columns = new ArrayList<String>();
columns.add("col1");
columns.add("col2");
VectorizationContext vc = new VectorizationContext("name", columns);
VectorExpression veAnd = vc.getVectorExpression(andExprDesc, VectorExpressionDescriptor.Mode.FILTER);
assertEquals(veAnd.getClass(), FilterExprAndExpr.class);
assertEquals(veAnd.getChildExpressions()[0].getClass(), FilterLongColGreaterLongScalar.class);
assertEquals(veAnd.getChildExpressions()[1].getClass(), SelectColumnIsTrue.class);
veAnd = vc.getVectorExpression(andExprDesc, VectorExpressionDescriptor.Mode.PROJECTION);
assertEquals(veAnd.getClass(), ColAndCol.class);
assertEquals(1, veAnd.getChildExpressions().length);
assertEquals(veAnd.getChildExpressions()[0].getClass(), LongColGreaterLongScalar.class);
assertEquals(3, ((ColAndCol) veAnd).getOutputColumnNum());
// OR
GenericUDFOPOr orUdf = new GenericUDFOPOr();
ExprNodeGenericFuncDesc orExprDesc = new ExprNodeGenericFuncDesc();
orExprDesc.setTypeInfo(TypeInfoFactory.booleanTypeInfo);
orExprDesc.setGenericUDF(orUdf);
List<ExprNodeDesc> children4 = new ArrayList<ExprNodeDesc>(2);
children4.add(greaterExprDesc);
children4.add(col2Expr);
orExprDesc.setChildren(children4);
// Allocate new Vectorization context to reset the intermediate columns.
vc = new VectorizationContext("name", columns);
VectorExpression veOr = vc.getVectorExpression(orExprDesc, VectorExpressionDescriptor.Mode.FILTER);
assertEquals(veOr.getClass(), FilterExprOrExpr.class);
assertEquals(veOr.getChildExpressions()[0].getClass(), FilterLongColGreaterLongScalar.class);
assertEquals(veOr.getChildExpressions()[1].getClass(), SelectColumnIsTrue.class);
veOr = vc.getVectorExpression(orExprDesc, VectorExpressionDescriptor.Mode.PROJECTION);
assertEquals(veOr.getClass(), ColOrCol.class);
assertEquals(1, veAnd.getChildExpressions().length);
assertEquals(veAnd.getChildExpressions()[0].getClass(), LongColGreaterLongScalar.class);
assertEquals(3, ((ColOrCol) veOr).getOutputColumnNum());
}
Aggregations