public Optional convert()

in paimon-trino-common/src/main/java/org/apache/paimon/trino/TrinoFilterConverter.java [78:111]


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

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

        Map<TrinoColumnHandle, Domain> domainMap = tupleDomain.getDomains().get();
        List<Predicate> conjuncts = new ArrayList<>();
        List<String> fieldNames = FieldNameUtils.fieldNames(rowType);
        for (Map.Entry<TrinoColumnHandle, Domain> entry : domainMap.entrySet()) {
            TrinoColumnHandle columnHandle = entry.getKey();
            Domain domain = entry.getValue();
            int index = fieldNames.indexOf(columnHandle.getColumnName());
            if (index != -1) {
                try {
                    conjuncts.add(toPredicate(index, columnHandle.getTrinoType(), domain));
                } catch (UnsupportedOperationException exception) {
                    LOG.warn(
                            "Unsupported predicate, maybe the type of column is not supported yet.",
                            exception);
                }
            }
        }

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