apache / apache/arrow-rs

Verify special case conversions for parquet physical to logical types

Open
#7,506 1 comment 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.