diff --git a/plugin/trino-iceberg/src/main/java/io/trino/plugin/iceberg/ExpressionConverter.java b/plugin/trino-iceberg/src/main/java/io/trino/plugin/iceberg/ExpressionConverter.java index ddb5e6555eedb..41af9d8bbd15e 100644 --- a/plugin/trino-iceberg/src/main/java/io/trino/plugin/iceberg/ExpressionConverter.java +++ b/plugin/trino-iceberg/src/main/java/io/trino/plugin/iceberg/ExpressionConverter.java @@ -82,7 +82,6 @@ private static Expression toIcebergExpression(String columnName, Type type, Doma return domain.isNullAllowed() ? alwaysTrue() : not(isNull(columnName)); } - // Skip structural types. TODO (https://github.com/trinodb/trino/issues/8759) Evaluate Apache Iceberg's support for predicate on structural types if (type instanceof ArrayType || type instanceof MapType || type instanceof RowType) { // Fail fast. Ignoring expression could lead to data loss in case of deletions. throw new UnsupportedOperationException("Unsupported type for expression: " + type); diff --git a/plugin/trino-iceberg/src/main/java/io/trino/plugin/iceberg/IcebergMetadata.java b/plugin/trino-iceberg/src/main/java/io/trino/plugin/iceberg/IcebergMetadata.java index ef6f057000550..f006ae07ae65a 100644 --- a/plugin/trino-iceberg/src/main/java/io/trino/plugin/iceberg/IcebergMetadata.java +++ b/plugin/trino-iceberg/src/main/java/io/trino/plugin/iceberg/IcebergMetadata.java @@ -2122,7 +2122,7 @@ public Optional> applyFilter(C Map newUnenforced = new LinkedHashMap<>(); Map domains = predicate.getDomains().orElseThrow(() -> new VerifyException("No domains")); domains.forEach((columnHandle, domain) -> { - // TODO (https://github.com/trinodb/trino/issues/8759) structural types cannot be used to filter a table scan in Iceberg library. + // structural types cannot be used to filter a table scan in Iceberg library. if (isStructuralType(columnHandle.getType()) || // Iceberg orders UUID values differently than Trino (perhaps due to https://bugs.openjdk.org/browse/JDK-7025832), so allow only IS NULL / IS NOT NULL checks (columnHandle.getType() == UUID && !(domain.isOnlyNull() || domain.getValues().isAll()))) {