long value = pred.literal().value(); switch (pred.op()) { case LT:
@Override public Expression negate() { return new UnboundPredicate<>(op().negate(), ref(), literal()); }
private void removeTimeFilters(List<Expression> expressions, Expression expression) { if (expression.op() == Operation.AND) { And and = (And) expression; removeTimeFilters(expressions, and.left()); removeTimeFilters(expressions, and.right()); return; } else if (expression instanceof UnboundPredicate) { UnboundPredicate pred = (UnboundPredicate) expression; NamedReference ref = (NamedReference) pred.ref(); Literal<?> lit = pred.literal(); if (TIMESTAMP_NAMES.contains(ref.name())) { Literal<Long> tsLiteral = lit.to(Types.TimestampType.withoutZone()); long millis = toMillis(tsLiteral.value()); addTimestampFilter(Expressions.predicate(pred.op(), "timestamp_ms", millis)); return; } } expressions.add(expression); }
"Cannot find field '%s' in struct: %s", ref().name(), struct); if (literal() == null) { switch (op()) { case IS_NULL: Literal<T> lit = literal().to(field.type()); if (lit == null) { throw new ValidationException(String.format( "Invalid value for comparison inclusive type %s: %s (%s)", field.type(), literal().value(), literal().value().getClass().getName()));
UnboundPredicate<?> dateint1 = assertAndUnwrapUnbound(or1.left()); Assert.assertEquals("Should be a dateint predicate", "dateint", dateint1.ref().name()); Assert.assertEquals("Should be dateint=20180416", 20180416, dateint1.literal().value()); Assert.assertTrue(or1.right() instanceof Or); Or or2 = (Or) or1.right(); UnboundPredicate<?> dateint2 = assertAndUnwrapUnbound(or2.left()); Assert.assertEquals("Should be a dateint predicate", "dateint", dateint2.ref().name()); Assert.assertEquals("Should be dateint=20180415", 20180415, dateint2.literal().value()); UnboundPredicate<?> dateint3 = assertAndUnwrapUnbound(or2.right()); Assert.assertEquals("Should be a dateint predicate", "dateint", dateint3.ref().name()); Assert.assertEquals("Should be dateint=20180417", 20180417, dateint3.literal().value());
Assert.assertEquals("Residual should be hour < 12", LT, unbound.op()); Assert.assertEquals("Residual should be hour < 12", "hour", unbound.ref().name()); Assert.assertEquals("Residual should be hour < 12", 12, unbound.literal().value()); Assert.assertEquals("Residual should be hour > 11", GT, unbound.op()); Assert.assertEquals("Residual should be hour > 11", "hour", unbound.ref().name()); Assert.assertEquals("Residual should be hour > 11", 11, unbound.literal().value());