c-thiel opened a new issue, #3606:
URL: https://github.com/apache/iceberg-rust/issues/3606

   ### Is your feature request related to a problem or challenge?
   
   #2880 reads unshredded variant columns from Parquet: a variant group stored 
as `metadata` and `value` binaries. A projected variant whose group contains a 
`typed_value` field fails with `FeatureUnsupported` ("Reading shredded variant 
column `v` (field id N) is not supported yet").
   
   Iceberg v3 allows writers to shred variants following the Parquet [variant 
shredding 
spec](https://github.com/apache/parquet-format/blob/master/VariantShredding.md).
 iceberg-java can write such files (`write.parquet.shred-variants`, off by 
default) and reads them. Tables containing shredded files are unreadable from 
iceberg-rust today if a query projects a shredded variant.
   
   Unprojected shredded variants do not block reads of other columns.
   
   
   ### Describe the solution you'd like
   
   Read shredded variant groups and return each row's variant, as the 
unshredded path does today.
   
   Requirements from the shredding spec:
   - Rebuild each row from `value` and `typed_value`, following the spec's 
rules for which of the two holds the row (including null and missing values).
   - Partially shredded objects: merge the fields in `typed_value` with the 
fields still encoded in `value`.
   - Shredded arrays and nested shredded objects, recursively.
   - Shredded primitive types mapped to their variant encodings (decimals, 
timestamps, UUID, etc.).
   - Match the columns inside a variant group by name, since they carry no 
field ids.
   
   arrow-rs provides `unshred_variant` in `parquet-variant-compute`, which 
folds `typed_value` back into `value`. Using it would add that crate as a 
dependency.
   
   Related: #2411 (v3 tracking), #2880 (unshredded read). Reference 
implementation in iceberg-go: apache/iceberg-go#986.
   
   
   ### Willingness to contribute
   
   None


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