File tree 1 file changed +13
-0
lines changed
datafusion/physical-plan/src 1 file changed +13
-0
lines changed Original file line number Diff line number Diff line change @@ -535,8 +535,21 @@ pub trait ExecutionPlan: Debug + DisplayAs + Send + Sync {
535
535
/// and [`ChildPushdownResult::self_filters`] is discarded.
536
536
///
537
537
/// The default implementation is a no-op that passes the result of pushdown from the children to its parent.
538
+ ///
539
+ /// When returning filters via [`FilterPushdownPropagation`] the order of the filters need not match
540
+ /// the order they were passed in via `child_pushdown_result`, but preserving the order may be beneficial
541
+ /// for debugging and reasoning about the resulting plans so it is recommended to preserve the order.
542
+ ///
543
+ /// There are various helper methods to make implementing this method easier, see:
544
+ /// - [`FilterPushdownPropagation::unsupported`]: to indicate that the node does not support filter pushdown at all.
545
+ /// - [`FilterPushdownPropagation::transparent`]: to indicate that the node supports filter pushdown but does not involve itself in it,
546
+ /// instead if simply transmits the result of pushdown into its children back up to its parent.
547
+ /// - [`PredicateSupports::new_with_supported_check`]: takes a callback that returns true / false for each filter to indicate pushdown support.
548
+ /// This can be used alongside [`FilterPushdownPropagation::with_filters`] and [`FilterPushdownPropagation::with_updated_node`]
549
+ /// to dynamically build a result with a mix of supported and unsupported filters.
538
550
///
539
551
/// [`PredicateSupport::Supported`]: crate::filter_pushdown::PredicateSupport::Supported
552
+ /// [`PredicateSupports::new_with_supported_check`]: crate::filter_pushdown::PredicateSupports::new_with_supported_check
540
553
fn handle_child_pushdown_result (
541
554
& self ,
542
555
child_pushdown_result : ChildPushdownResult ,
You can’t perform that action at this time.
0 commit comments