public Optional convert()

in paimon-prestosql-common/src/main/java/org/apache/paimon/prestosql/PrestoSqlFilterConverter.java [74:104]


    public Optional<Predicate> convert(TupleDomain<PrestoSqlColumnHandle> tupleDomain) {
        if (tupleDomain.isAll()) {
            // TODO alwaysTrue
            return Optional.empty();
        }

        if (!tupleDomain.getDomains().isPresent()) {
            // TODO alwaysFalse
            return Optional.empty();
        }

        Map<PrestoSqlColumnHandle, Domain> domainMap = tupleDomain.getDomains().get();
        List<Predicate> conjuncts = new ArrayList<>();
        List<String> fieldNames = FieldNameUtils.fieldNames(rowType);
        for (Map.Entry<PrestoSqlColumnHandle, Domain> entry : domainMap.entrySet()) {
            PrestoSqlColumnHandle columnHandle = entry.getKey();
            Domain domain = entry.getValue();
            int index = fieldNames.indexOf(columnHandle.getColumnName());
            if (index != -1) {
                try {
                    conjuncts.add(toPredicate(index, columnHandle.getPrestoSqlType(), domain));
                } catch (UnsupportedOperationException ignored) {
                }
            }
        }

        if (conjuncts.isEmpty()) {
            return Optional.empty();
        }
        return Optional.of(and(conjuncts));
    }