in paimon-presto-0.236/src/main/java/org/apache/paimon/presto/PrestoFilterConverter.java [155:187]
private Predicate toPredicate(int columnIndex, Range range) {
Type type = range.getType();
if (range.isSingleValue()) {
Object value = getLiteralValue(type, range.getSingleValue());
return builder.equal(columnIndex, value);
}
List<Predicate> conjuncts = new ArrayList<>(2);
if (!range.getLow().isLowerUnbounded()) {
Object low = getLiteralValue(type, range.getLow().getValue());
Predicate lowBound;
if (range.getLow().getBound() == Marker.Bound.EXACTLY) {
lowBound = builder.greaterOrEqual(columnIndex, low);
} else {
lowBound = builder.greaterThan(columnIndex, low);
}
conjuncts.add(lowBound);
}
if (!range.getHigh().isUpperUnbounded()) {
Object high = getLiteralValue(type, range.getHigh().getValue());
Predicate highBound;
if (range.getHigh().getBound() == Marker.Bound.EXACTLY) {
highBound = builder.lessOrEqual(columnIndex, high);
} else {
highBound = builder.lessThan(columnIndex, high);
}
conjuncts.add(highBound);
}
return PredicateBuilder.and(conjuncts);
}