Strict projection isn't required and wasn't implemented for several of the partitioning transformations. When strict projection isn't implemented (the projectStrict method returns null) Iceberg will fall back to a safe implementation. For example, residual evaluation will not remove predicates because they cannot be guaranteed to be true, and deletes can't determine that all values in a file match so the file can't be deleted (deletes usually fall back to min/max metrics evaluation).
Implementing strict projection for all transforms where possible will help query efficiency, will make deletes faster, etc.
Strict projection isn't required and wasn't implemented for several of the partitioning transformations. When strict projection isn't implemented (the
projectStrictmethod returnsnull) Iceberg will fall back to a safe implementation. For example, residual evaluation will not remove predicates because they cannot be guaranteed to be true, and deletes can't determine that all values in a file match so the file can't be deleted (deletes usually fall back to min/max metrics evaluation).Implementing strict projection for all transforms where possible will help query efficiency, will make deletes faster, etc.