Is your feature request related to a problem or challenge? Please describe what you are trying to do.
Currently RowSelection stores a list of RowSelector. This is optimised for the case of large runs of skipped or selected rows, allowing this to be pushed down to the underlying decoding machinery. Whilst this works very well for the use-case of skipping data based on the page index, where the selections are necessarily in the thousands of rows, it will potentially degrade in the presence of more granular predicate evaluation, e.g. as performed by ArrowPredicate.
Describe the solution you'd like
In a similar vein to #1248, we should have different strategies based on the selectivity of the predicate. In particular I would like RowSelection to switch between a RowSelector approach that is pushed down to the underlying readers, and a late evaluation approach where it stores a BooleanBuffer that is applied to the columns after the fact
Describe alternatives you've considered
Additional context
Is your feature request related to a problem or challenge? Please describe what you are trying to do.
Currently
RowSelectionstores a list ofRowSelector. This is optimised for the case of large runs of skipped or selected rows, allowing this to be pushed down to the underlying decoding machinery. Whilst this works very well for the use-case of skipping data based on the page index, where the selections are necessarily in the thousands of rows, it will potentially degrade in the presence of more granular predicate evaluation, e.g. as performed byArrowPredicate.Describe the solution you'd like
In a similar vein to #1248, we should have different strategies based on the selectivity of the predicate. In particular I would like RowSelection to switch between a
RowSelectorapproach that is pushed down to the underlying readers, and a late evaluation approach where it stores aBooleanBufferthat is applied to the columns after the factDescribe alternatives you've considered
Additional context
skipfromRowSelector#7450