-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Open
Labels
enhancementNew feature or requestNew feature or request
Description
Is your feature request related to a problem or challenge?
#8073 adds support for projection pushdown in the physical optimizer.
However, its implementation directly checks for and special cases the built in ExecutionPlan nodes in DataFusion (which other optimizer passes do as well)
For example
} else if let Some(output_req) = input.downcast_ref::<OutputRequirementExec>() {
try_swapping_with_output_req(projection, output_req)?
} else if input.is::<CoalescePartitionsExec>() {
try_swapping_with_coalesce_partitions(projection)?
} else if let Some(filter) = input.downcast_ref::<FilterExec>() {
try_swapping_with_filter(projection, filter)?
} else if let Some(repartition) = input.downcast_ref::<RepartitionExec>() {
try_swapping_with_repartition(projection, repartition)?
} else if let Some(sort) = input.downcast_ref::<SortExec>() {
try_swapping_with_sort(projection, sort)?Describe the solution you'd like
It would be nice if there was an abstraction somehow where ProjectionPushdown could be used by extension / user defined ExecutionPlan nodes
Describe alternatives you've considered
There is a really nice discussion between @crepererum and @ozankabak here #8073 (comment) that provides insight and various options.
Additional context
No response
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request