use of org.apache.iceberg.expressions.UnboundPredicate in project iceberg by apache.
the class TestHiveIcebergFilterFactory method testNotEqualsOperand.
@Test
public void testNotEqualsOperand() {
SearchArgument.Builder builder = SearchArgumentFactory.newBuilder();
SearchArgument arg = builder.startNot().equals("salary", PredicateLeaf.Type.LONG, 3000L).end().build();
Not expected = (Not) Expressions.not(Expressions.equal("salary", 3000L));
Not actual = (Not) HiveIcebergFilterFactory.generateFilterExpression(arg);
UnboundPredicate childExpressionActual = (UnboundPredicate) actual.child();
UnboundPredicate childExpressionExpected = Expressions.equal("salary", 3000L);
assertEquals(actual.op(), expected.op());
assertEquals(actual.child().op(), expected.child().op());
assertEquals(childExpressionActual.ref().name(), childExpressionExpected.ref().name());
assertEquals(childExpressionActual.literal(), childExpressionExpected.literal());
}
use of org.apache.iceberg.expressions.UnboundPredicate in project iceberg by apache.
the class TestHiveIcebergFilterFactory method testLessThanOperand.
@Test
public void testLessThanOperand() {
SearchArgument.Builder builder = SearchArgumentFactory.newBuilder();
SearchArgument arg = builder.startAnd().lessThan("salary", PredicateLeaf.Type.LONG, 3000L).end().build();
UnboundPredicate expected = Expressions.lessThan("salary", 3000L);
UnboundPredicate actual = (UnboundPredicate) HiveIcebergFilterFactory.generateFilterExpression(arg);
assertEquals(actual.op(), expected.op());
assertEquals(actual.literal(), expected.literal());
assertEquals(actual.ref().name(), expected.ref().name());
}
use of org.apache.iceberg.expressions.UnboundPredicate in project iceberg by apache.
the class TestHiveIcebergFilterFactory method testDateType.
@Test
public void testDateType() {
SearchArgument.Builder builder = SearchArgumentFactory.newBuilder();
Date gmtDate = Date.valueOf(LocalDate.of(2015, 11, 12));
SearchArgument arg = builder.startAnd().equals("date", PredicateLeaf.Type.DATE, gmtDate).end().build();
UnboundPredicate expected = Expressions.equal("date", Literal.of("2015-11-12").to(Types.DateType.get()).value());
UnboundPredicate actual = (UnboundPredicate) HiveIcebergFilterFactory.generateFilterExpression(arg);
assertPredicatesMatch(expected, actual);
}
use of org.apache.iceberg.expressions.UnboundPredicate in project iceberg by apache.
the class TestHiveIcebergFilterFactory method testFloatType.
@Test
public void testFloatType() {
SearchArgument.Builder builder = SearchArgumentFactory.newBuilder();
SearchArgument arg = builder.startAnd().equals("float", PredicateLeaf.Type.FLOAT, 1200D).end().build();
UnboundPredicate expected = Expressions.equal("float", 1200D);
UnboundPredicate actual = (UnboundPredicate) HiveIcebergFilterFactory.generateFilterExpression(arg);
assertPredicatesMatch(expected, actual);
}
use of org.apache.iceberg.expressions.UnboundPredicate in project iceberg by apache.
the class TestProjection method testStrictIdentityProjection.
@Test
public void testStrictIdentityProjection() {
List<UnboundPredicate<?>> predicates = Lists.newArrayList(Expressions.notNull("id"), Expressions.isNull("id"), Expressions.lessThan("id", 100), Expressions.lessThanOrEqual("id", 101), Expressions.greaterThan("id", 102), Expressions.greaterThanOrEqual("id", 103), Expressions.equal("id", 104), Expressions.notEqual("id", 105));
PartitionSpec spec = PartitionSpec.builderFor(SCHEMA).identity("id").build();
for (UnboundPredicate<?> predicate : predicates) {
// get the projected predicate
Expression expr = Projections.strict(spec).project(predicate);
UnboundPredicate<?> projected = assertAndUnwrapUnbound(expr);
// check inclusive the bound predicate to ensure the types are correct
BoundPredicate<?> bound = assertAndUnwrap(predicate.bind(spec.schema().asStruct(), true));
Assert.assertEquals("Field name should match partition struct field", "id", projected.ref().name());
Assert.assertEquals("Operation should match", bound.op(), projected.op());
if (bound.isLiteralPredicate()) {
Assert.assertEquals("Literal should be equal", bound.asLiteralPredicate().literal().value(), projected.literal().value());
} else {
Assert.assertNull("Literal should be null", projected.literal());
}
}
}
Aggregations