anoopj commented on code in PR #3416:
URL: https://github.com/apache/iceberg-rust/pull/3416#discussion_r4253338308


##########
crates/iceberg/src/arrow/reader/row_filter.rs:
##########
@@ -975,6 +975,88 @@ mod tests {
         )
     }
 
+    /// A `FileScanTask` built or deserialized outside `TableScan` carries an
+    /// un-normalized predicate, so a raw `Not(...)` can reach the reader. 
Driving
+    /// it through a full read with row-group filtering and row selection 
enabled
+    /// exercises both the row-group and page-index evaluators, which negate 
NOT

Review Comment:
   Added `test_not_predicate_read_through_page_index`, to test this.
   
   ▎ but with a single row group and default writer props the row-group stage 
prunes first and the page-index path almost certainly never runs
   
   The default Arrow writer does emit a column index, so the page-index path 
runs whenever a row group survives (the new test exercises exactly that). 
Agreed it wasn't isolated in the original test, which is why the new one turns 
row-group filtering off.
   
   ▎ NOT(a AND b)/NOT(a OR b), NOT(x IS NULL), NOT(StartsWith), and a NOT 
arriving via the equality-delete combination
   
   This PR only adds the single `rewrite_not()` call at the pipeline boundary; 
it doesn't change rewrite_not. The per-shape behavior lives in `rewrite_not` 
and is already unit-tested, so testing each shape end to end here would be at 
the wrong layer and duplicate it. The equality-delete combination is the one 
that actually touches reader code (the predicate is AND-ed with the delete 
predicate before the rewrite), so I can add that one if you'd like.



-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to