Verify special case conversions for parquet physical to logical types
- Dominant language
- Rust
- Stars
- 3.6k
- Forks
- 1.3k
- Avg merge
- 2d 18h
- Merged PRs (30d)
- 169
Description
> I did try signed->unsigned for 32 and 64 bit ints and there was no difference.
Ahh, the reason for this is that I32/64->U32/64 is handled above (around L171). I would think anything that falls through and relies on `arrow_cast::cast` is going to be potentially slow due to use of `unary_opt`, but a quick glance at the decimal code looks like it will figure out which casts are infallible and use `unary` instead. Perhaps other conversions do a similar optimization.
It might be worth exploring enumerating all of the allowed Parquet physical to logical type mappings and account for them here and not rely on `arrow_cast` machinery.
_Originally posted by @etseidl in https://github.com/apache/arrow-rs/pull/7055#discussion_r2087508319_
Contributor guide
Research direction
Review the Parquet physical-to-logical conversion logic around L171 and the fallback through arrow_cast::cast. Enumerate the allowed mappings, verify which conversions currently use the fallback, and document the expected result and performance behavior before deciding what coverage or implementation change is needed.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- data-engineering
- Issue type
- Refactor
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100