[Parquet][C++] Optimize `RecordReader` for flat optional
Open
Component: C++
Component: Parquet
Type: enhancement
- Dominant language
- C++
- Stars
- 17.1k
- Forks
- 4.3k
- Avg merge
- 3d 13h
- Merged PRs (30d)
- 88
Description
### Describe the enhancement requested
When reading flat optional values from a Parquet file, the definition levels correspond to Arrow validity bitmap.
We can speed up `RecordReader` for this common case by decoding the levels directly as the validity bitmap.
Open questions:
- Should `int16_t* RecordReader::def_levels()` return `nullptr` (break) or make an effort to still provide some levels (additional complexity or cost). The new faster breaking behavior could also be enabled my a ctor flag.
### Component(s)
C++, Parquet
Contributor guide
Assessment
This issue has not been assessed yet.