rdblue commented on code in PR #12304:
URL: https://github.com/apache/iceberg/pull/12304#discussion_r1963953648


##########
api/src/main/java/org/apache/iceberg/expressions/UnboundPredicate.java:
##########
@@ -124,13 +125,17 @@ public Expression bind(StructType struct, boolean 
caseSensitive) {
   private Expression bindUnaryOperation(BoundTerm<T> boundTerm) {
     switch (op()) {
       case IS_NULL:
-        if (boundTerm.ref().field().isRequired()) {
+        if (!boundTerm.producesNull()) {

Review Comment:
   A good example is `VoidTransform`, which maps all values to null. If a 
transform preserves order then it can't produce a null value for a non-null 
input because that would violate order preservation. If it does not preserve 
order, then it could map values to null so we account for that. If a field is 
required there are no non-null values, so the only way a null could be produced 
is by the transform.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org
For additional commands, e-mail: issues-h...@iceberg.apache.org

Reply via email to