Skip to content

Commit

Permalink
fix
Browse files Browse the repository at this point in the history
  • Loading branch information
yuzelin committed Jun 14, 2024
1 parent fab7dcf commit c37e851
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 28 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -122,30 +122,25 @@ public Optional<OrcFilters.Predicate> visitNotIn(FieldRef fieldRef, List<Object>

@Override
public Optional<OrcFilters.Predicate> visitAnd(List<Optional<OrcFilters.Predicate>> children) {
if (children.size() != 2) {
throw new RuntimeException("Illegal and children: " + children.size());
}

Optional<OrcFilters.Predicate> c1 = children.get(0);
if (!c1.isPresent()) {
return Optional.empty();
}
Optional<OrcFilters.Predicate> c2 = children.get(1);
return c2.map(value -> new OrcFilters.And(c1.get(), value));
OrcFilters.Predicate[] predicates = predicates(children);
return predicates.length == 0
? Optional.empty()
: Optional.of(new OrcFilters.And(predicates));
}

@Override
public Optional<OrcFilters.Predicate> visitOr(List<Optional<OrcFilters.Predicate>> children) {
if (children.size() != 2) {
throw new RuntimeException("Illegal or children: " + children.size());
}
OrcFilters.Predicate[] predicates = predicates(children);
return predicates.length == 0
? Optional.empty()
: Optional.of(new OrcFilters.Or(predicates));
}

Optional<OrcFilters.Predicate> c1 = children.get(0);
if (!c1.isPresent()) {
return Optional.empty();
}
Optional<OrcFilters.Predicate> c2 = children.get(1);
return c2.map(value -> new OrcFilters.Or(c1.get(), value));
private OrcFilters.Predicate[] predicates(List<Optional<OrcFilters.Predicate>> children) {
return children.stream()
.filter(Optional::isPresent)
.map(Optional::get)
.toArray(OrcFilters.Predicate[]::new);
}

private Optional<OrcFilters.Predicate> convertBinary(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,9 +74,8 @@ public void testApplyCompoundPredicate() {
test(
builder.in(0, Arrays.asList(1L, 2L, 3L)),
new OrcFilters.Or(
new OrcFilters.Or(
new OrcFilters.Equals("long1", PredicateLeaf.Type.LONG, 1),
new OrcFilters.Equals("long1", PredicateLeaf.Type.LONG, 2)),
new OrcFilters.Equals("long1", PredicateLeaf.Type.LONG, 1),
new OrcFilters.Equals("long1", PredicateLeaf.Type.LONG, 2),
new OrcFilters.Equals("long1", PredicateLeaf.Type.LONG, 3)),
true);

Expand All @@ -91,12 +90,10 @@ public void testApplyCompoundPredicate() {
test(
builder.notIn(0, Arrays.asList(1L, 2L, 3L)),
new OrcFilters.And(
new OrcFilters.And(
new OrcFilters.Not(
new OrcFilters.Equals("long1", PredicateLeaf.Type.LONG, 1)),
new OrcFilters.Not(
new OrcFilters.Equals(
"long1", PredicateLeaf.Type.LONG, 2))),
new OrcFilters.Not(
new OrcFilters.Equals("long1", PredicateLeaf.Type.LONG, 1)),
new OrcFilters.Not(
new OrcFilters.Equals("long1", PredicateLeaf.Type.LONG, 2)),
new OrcFilters.Not(
new OrcFilters.Equals("long1", PredicateLeaf.Type.LONG, 3))),
true);
Expand Down

0 comments on commit c37e851

Please sign in to comment.