Is your feature request related to a problem or challenge? Please describe what you are trying to do.
Follow up to #10141.
parquet/src/arrow/arrow_reader/selection/mod.rs has grown past 2100 lines (plus ~1300 lines in selection/boolean.rs) and now mixes several concerns:
- the
RowSelection type and its public API,
- the set-algebra helpers (
intersection / union / and_then and the selector-merge algorithms),
- the cursor machinery (
RowSelectionCursor, RowSelectionPolicy, RowSelectionStrategy),
- a large test module.
This was noted during review of #10141 but deferred to keep that PR's diff reviewable.
Describe the solution you'd like
A mechanical, no-functional-change reorganization, e.g.:
selection/mod.rs — RowSelection, RowSelector, public API surface
selection/algebra.rs — intersection/union/and_then and merge helpers
selection/cursor.rs — cursor and policy/strategy types
selection/boolean.rs — (existing) mask-specific implementation
- tests moved next to the code they cover
The public API (parquet::arrow::arrow_reader::{RowSelection, RowSelector, RowSelectionCursor, RowSelectionPolicy, RowSelectionIter, MaskRunIter}) must be unchanged.
Describe alternatives you've considered
Leaving the file as is; it works but is increasingly hard to navigate and review.
Is your feature request related to a problem or challenge? Please describe what you are trying to do.
Follow up to #10141.
parquet/src/arrow/arrow_reader/selection/mod.rshas grown past 2100 lines (plus ~1300 lines inselection/boolean.rs) and now mixes several concerns:RowSelectiontype and its public API,intersection/union/and_thenand the selector-merge algorithms),RowSelectionCursor,RowSelectionPolicy,RowSelectionStrategy),This was noted during review of #10141 but deferred to keep that PR's diff reviewable.
Describe the solution you'd like
A mechanical, no-functional-change reorganization, e.g.:
selection/mod.rs—RowSelection,RowSelector, public API surfaceselection/algebra.rs— intersection/union/and_then and merge helpersselection/cursor.rs— cursor and policy/strategy typesselection/boolean.rs— (existing) mask-specific implementationThe public API (
parquet::arrow::arrow_reader::{RowSelection, RowSelector, RowSelectionCursor, RowSelectionPolicy, RowSelectionIter, MaskRunIter}) must be unchanged.Describe alternatives you've considered
Leaving the file as is; it works but is increasingly hard to navigate and review.