anoopj opened a new issue, #3264:
URL: https://github.com/apache/iceberg-rust/issues/3264

   ### Apache Iceberg Rust version
   
   Latest main
   
   ### Describe the bug
   
   Surfaced during 
https://github.com/apache/iceberg-rust/pull/3247#pullrequestreview-5282630063
   
   `PageIndexEvaluator::apply_predicate_to_column_index` constructs INT32 and 
INT64 page bounds as `PrimitiveLiteral::Int` and `PrimitiveLiteral::Long`, 
regardless of the Iceberg field type.
   
     For decimal fields, query datums use `PrimitiveLiteral::Int128`. 
`Datum::partial_cmp` only compares decimal datums when both literals are 
Int128, so comparisons between these page bounds and query datums return None.
   
     This can silently prune matching pages when page-index row selection is 
enabled:
   
     - Inequality predicates (<, <=, >, >=) treat the failed comparison as 
false and reject the page.
     - IN can conclude that no literal is within the page bounds and reject the 
page.
     - Equality currently fails open and retains the page.
   
     The row-group statistics path already handles these encodings correctly: 
`get_parquet_stat_min_as_datum` (and max) convert decimal `Statistics::Int32` 
and `Statistics::Int64` values to `PrimitiveLiteral::Int128`.
   
     Parquet commonly encodes decimal precision ≤9 as INT32 and precision 10–18 
as INT64, including files produced by the current Arrow/Parquet writer.
   
     Fix direction: when the Iceberg field type is decimal, convert 
`INT32/INT64` page-index bounds to `Int128`, matching the row-group statistics 
path. Add regression coverage for inequality and IN predicates with row 
selection enabled.
   
   ### To Reproduce
   
   _No response_
   
   ### Expected behavior
   
   _No response_
   
   ### Willingness to contribute
   
   I can contribute a fix for this bug independently


-- 
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