builder.startNot();
@Test public void testBuilder() throws Exception { SearchArgument sarg = SearchArgumentFactory.newBuilder() .startAnd() .lessThan("x", PredicateLeaf.Type.LONG, 10L) .lessThanEquals("y", PredicateLeaf.Type.STRING, "hi") .equals("z", PredicateLeaf.Type.FLOAT, 1.0) .end() .build(); assertEquals("leaf-0 = (LESS_THAN x 10), " + "leaf-1 = (LESS_THAN_EQUALS y hi), " + "leaf-2 = (EQUALS z 1.0), " + "expr = (and leaf-0 leaf-1 leaf-2)", sarg.toString()); sarg = SearchArgumentFactory.newBuilder() .startNot() .startOr() .isNull("x", PredicateLeaf.Type.LONG) .between("y", PredicateLeaf.Type.LONG, 10L, 20L) .in("z", PredicateLeaf.Type.LONG, 1L, 2L, 3L) .nullSafeEquals("a", PredicateLeaf.Type.STRING, "stinger") .end() .end() .build(); assertEquals("leaf-0 = (IS_NULL x), " + "leaf-1 = (BETWEEN y 10 20), " + "leaf-2 = (IN z 1 2 3), " + "leaf-3 = (NULL_SAFE_EQUALS a stinger), " + "expr = (and (not leaf-0) (not leaf-1) (not leaf-2) (not leaf-3))", sarg.toString()); }
sargBuilder.startNot(); sargBuilder.lessThan(col, literalPair.second, literalPair.first); sargBuilder.end(); sargBuilder.startNot(); sargBuilder.lessThanEquals(col, literalPair.second, literalPair.first); sargBuilder.end(); sargBuilder.startNot(); sargBuilder.lessThanEquals(col, literalPair.second, literalPair.first); sargBuilder.end(); sargBuilder.startNot(); sargBuilder.lessThan(col, literalPair.second, literalPair.first); sargBuilder.end(); return null; case NOT_EQUALS: sargBuilder.startNot(); sargBuilder.equals(col, literalPair.second, literalPair.first); sargBuilder.end(); sargBuilder.startNot(); sargBuilder.isNull((String) evalChild, sargBuilder.startNot(); call.getOperands().get(0).accept(this); sargBuilder.end();
break; case OP_NE: builder.startNot(); builder.equals(getColumnName(lhs), getExpressionValue(rhs)); builder.end(); break; case OP_GT: builder.startNot(); builder.lessThanEquals(getColumnName(lhs), getExpressionValue(rhs)); builder.end(); break; case OP_GE: builder.startNot(); builder.lessThan(getColumnName(lhs), getExpressionValue(rhs)); builder.end(); break; case OP_NOT: builder.startNot(); buildSearchArgument(unaryExpr, builder); builder.end();
builder.end(); } else if (op == GenericUDFOPNot.class) { builder.startNot(); addChildren(expr); builder.end(); createLeaf(PredicateLeaf.Operator.EQUALS, expr); } else if (op == GenericUDFOPNotEqual.class) { builder.startNot(); createLeaf(PredicateLeaf.Operator.EQUALS, expr); builder.end(); createLeaf(PredicateLeaf.Operator.NULL_SAFE_EQUALS, expr); } else if (op == GenericUDFOPGreaterThan.class) { builder.startNot(); createLeaf(PredicateLeaf.Operator.LESS_THAN_EQUALS, expr); builder.end(); } else if (op == GenericUDFOPEqualOrGreaterThan.class) { builder.startNot(); createLeaf(PredicateLeaf.Operator.LESS_THAN, expr); builder.end(); createLeaf(PredicateLeaf.Operator.IS_NULL, expr, 0); } else if (op == GenericUDFOPNotNull.class) { builder.startNot(); createLeaf(PredicateLeaf.Operator.IS_NULL, expr, 0); builder.end();
builder.startNot();
builder.end(); } else if (op == GenericUDFOPNot.class) { builder.startNot(); addChildren(expr); builder.end(); createLeaf(PredicateLeaf.Operator.EQUALS, expr); } else if (op == GenericUDFOPNotEqual.class) { builder.startNot(); createLeaf(PredicateLeaf.Operator.EQUALS, expr); builder.end(); createLeaf(PredicateLeaf.Operator.NULL_SAFE_EQUALS, expr); } else if (op == GenericUDFOPGreaterThan.class) { builder.startNot(); createLeaf(PredicateLeaf.Operator.LESS_THAN_EQUALS, expr); builder.end(); } else if (op == GenericUDFOPEqualOrGreaterThan.class) { builder.startNot(); createLeaf(PredicateLeaf.Operator.LESS_THAN, expr); builder.end(); createLeaf(PredicateLeaf.Operator.IS_NULL, expr, 0); } else if (op == GenericUDFOPNotNull.class) { builder.startNot(); createLeaf(PredicateLeaf.Operator.IS_NULL, expr, 0); builder.end();
.startNot() .startOr() .isNull("x", PredicateLeaf.Type.LONG)
.startNot() .startOr() .isNull("x", PredicateLeaf.Type.LONG)
.startNot() .startOr() .isNull("x", PredicateLeaf.Type.LONG)
.startNot() .startOr() .isNull("x", PredicateLeaf.Type.LONG)
@Test public void testBuilder() throws Exception { SearchArgument sarg = SearchArgumentFactory.newBuilder() .startNot() .startOr() .isNull("x", PredicateLeaf.Type.LONG) .between("y", PredicateLeaf.Type.LONG, 10L, 20L) .in("z", PredicateLeaf.Type.LONG, 1L, 2L, 3L) .nullSafeEquals("a", PredicateLeaf.Type.STRING, "stinger") .end() .end() .build(); MessageType schema = MessageTypeParser.parseMessageType("message test {" + " optional int32 x; required int32 y; required int32 z;" + " optional binary a;}"); FilterPredicate p = ParquetFilterPredicateConverter.toFilterPredicate(sarg, schema); String expected = "and(and(and(not(eq(x, null)), not(and(lteq(y, 20), not(lt(y, 10))))), not(or(or(eq(z, 1), " + "eq(z, 2)), eq(z, 3)))), not(eq(a, Binary{\"stinger\"})))"; assertEquals(expected, p.toString()); }
@Test public void testFilterFloatColumns() { MessageType schema = MessageTypeParser.parseMessageType("message test { required float a; required int32 b; }"); SearchArgument sarg = SearchArgumentFactory.newBuilder() .startNot() .startOr() .isNull("a", PredicateLeaf.Type.FLOAT) .between("a", PredicateLeaf.Type.FLOAT, 10.2, 20.3) .in("b", PredicateLeaf.Type.LONG, 1L, 2L, 3L) .end() .end() .build(); FilterPredicate p = ParquetFilterPredicateConverter.toFilterPredicate(sarg, schema); String expected = "and(and(not(eq(a, null)), not(and(lteq(a, 20.3), not(lt(a, 10.2))))), not(or(or(eq(b, 1), eq(b, 2)), eq(b, 3))))"; assertEquals(expected, p.toString()); }
@Test public void testFilterColumnsThatDoNoExistOnSchema() { MessageType schema = MessageTypeParser.parseMessageType("message test { required int32 a; required binary stinger; }"); SearchArgument sarg = SearchArgumentFactory.newBuilder() .startNot() .startOr() .isNull("a", PredicateLeaf.Type.LONG) .between("y", PredicateLeaf.Type.LONG, 10L, 20L) // Column will be removed from filter .in("z", PredicateLeaf.Type.LONG, 1L, 2L, 3L) // Column will be removed from filter .nullSafeEquals("a", PredicateLeaf.Type.STRING, "stinger") .end() .end() .build(); FilterPredicate p = ParquetFilterPredicateConverter.toFilterPredicate(sarg, schema); String expected = "and(not(eq(a, null)), not(eq(a, Binary{\"stinger\"})))"; assertEquals(expected, p.toString()); }
protected SearchArgument.Builder add(SearchArgument.Builder builder) { return pred.add(builder.startNot()).end(); }