in src/main/java/org/apache/paimon/trino/TrinoFilterConverter.java [216:248]
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.isLowUnbounded()) {
Object low = getLiteralValue(type, range.getLowBoundedValue());
Predicate lowBound;
if (range.isLowInclusive()) {
lowBound = builder.greaterOrEqual(columnIndex, low);
} else {
lowBound = builder.greaterThan(columnIndex, low);
}
conjuncts.add(lowBound);
}
if (!range.isHighUnbounded()) {
Object high = getLiteralValue(type, range.getHighBoundedValue());
Predicate highBound;
if (range.isHighInclusive()) {
highBound = builder.lessOrEqual(columnIndex, high);
} else {
highBound = builder.lessThan(columnIndex, high);
}
conjuncts.add(highBound);
}
return and(conjuncts);
}