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