private Predicate toPredicate()

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);
    }