erikwright commented on PR #17597:
URL: https://github.com/apache/iceberg/pull/17597#issuecomment-5689537207

   @yangshangqing95 — I’m interested in this work as a foundation for 
position-selective reads. While evaluating your POC I tested with nested data 
and unequal page boundaries.
   
   I found a case where `_pos` and the scalar ID are correct, but nested values 
come from a different physical row. For example, row 1001 contains a nested 
number from row 932 where it should contain null. The read is correct without 
page pruning; enabling it produces the wrong result with both V1 and V2 pages.
   
   I put together [a small branch based directly on your 
POC](https://github.com/erikwright/iceberg/compare/101a48da43db62ea00e2ea6dedf07c275c11b882...erik/parquet-poc-column-sync)
 with the reproduction and a proposed fix. It adapts Parquet’s existing 
ColumnReadStoreImpl into Iceberg’s record construction so the data columns 
follow the same selected positions, retaining native decoding for unfiltered 
groups. The Parquet module checks, data-reader tests and Revapi pass on the 
current dependencies.
   
   There’s a separate issue in Parquet’s synchronizer: it can stop before 
reaching the final selected row’s page. [Parquet 
#3748](https://github.com/apache/parquet-java/pull/3748) fixes that upstream, 
but isn’t in the dependency this POC uses. These particular regressions pass 
without it, but other valid selections still need that fix before production 
enablement. I’ve asked about getting it into a release.
   
   Feel free to merge or cherry-pick the branch into your POC if this approach 
fits your planned follow-ons.


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