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 75d7a061abac..f91c6c17d64a 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 @@ -1722,13 +1722,13 @@ public Optional> applyFilter(C TupleDomain remainingConstraint = constraint.getSummary() .transformKeys(IcebergColumnHandle.class::cast) - .filter(isIdentityPartition.negate()) - .filter(isMetadataColumn.negate()); + .filter(isIdentityPartition.negate()); TupleDomain newUnenforcedConstraint = remainingConstraint // TODO: Remove after completing https://github.com/trinodb/trino/issues/8759 // Only applies to the unenforced constraint because structural types cannot be partition keys .filter((columnHandle, predicate) -> !isStructuralType(columnHandle.getType())) + .filter(isMetadataColumn.negate()) .intersect(table.getUnenforcedPredicate()); if (newEnforcedConstraint.equals(table.getEnforcedPredicate()) diff --git a/plugin/trino-iceberg/src/test/java/io/trino/plugin/iceberg/BaseIcebergConnectorTest.java b/plugin/trino-iceberg/src/test/java/io/trino/plugin/iceberg/BaseIcebergConnectorTest.java index 7eddfffbac51..b3e5ee2d69fa 100644 --- a/plugin/trino-iceberg/src/test/java/io/trino/plugin/iceberg/BaseIcebergConnectorTest.java +++ b/plugin/trino-iceberg/src/test/java/io/trino/plugin/iceberg/BaseIcebergConnectorTest.java @@ -3291,6 +3291,12 @@ public void testPathHiddenColumn() assertThat(query("SELECT file_path FROM \"" + tableName + "$files\"")) .matches("SELECT DISTINCT \"$path\" as file_path FROM " + tableName); + String somePath = (String) computeScalar("SELECT \"$path\" FROM " + tableName + " WHERE userid = 2"); + assertThat(query("SELECT userid FROM " + tableName + " WHERE \"$path\" = '" + somePath + "'")) + .matches("VALUES 2, 5"); + assertThat(query("SELECT userid FROM " + tableName + " WHERE \"$path\" = '" + somePath + "' AND userid > 0")) + .matches("VALUES 2, 5"); + assertUpdate("DROP TABLE " + tableName); }