Trait PredicatePushdown

Source
pub trait PredicatePushdown {
    // Required method
    fn predicate_pushdown(
        &self,
        predicate: Condition,
        ctx: &mut PredicatePushdownContext,
    ) -> PlanRef;
}
Expand description

The trait for predicate pushdown, only logical plan node will use it, though all plan node impl it.

Required Methods§

Source

fn predicate_pushdown( &self, predicate: Condition, ctx: &mut PredicatePushdownContext, ) -> PlanRef

Push predicate down for every logical plan node.

There are three kinds of predicates:

  1. those can’t be pushed down. We just create a LogicalFilter for them above the current PlanNode. i.e.,

    LogicalFilter::create(self.clone().into(), predicate)
  2. those can be merged with current PlanNode (e.g., LogicalJoin). We just merge the predicates with the Condition of it.

  3. those can be pushed down. We pass them to current PlanNode’s input.

Implementors§

Source§

impl PredicatePushdown for LogicalAgg

Source§

impl PredicatePushdown for LogicalApply

Source§

impl PredicatePushdown for LogicalCdcScan

Source§

impl PredicatePushdown for LogicalChangeLog

Source§

impl PredicatePushdown for LogicalCteRef

Source§

impl PredicatePushdown for LogicalDedup

Source§

impl PredicatePushdown for LogicalDelete

Source§

impl PredicatePushdown for LogicalExcept

Source§

impl PredicatePushdown for LogicalExpand

Source§

impl PredicatePushdown for LogicalFileScan

Source§

impl PredicatePushdown for LogicalFilter

Source§

impl PredicatePushdown for LogicalHopWindow

Source§

impl PredicatePushdown for LogicalIcebergScan

Source§

impl PredicatePushdown for LogicalInsert

Source§

impl PredicatePushdown for LogicalIntersect

Source§

impl PredicatePushdown for LogicalJoin

Source§

impl PredicatePushdown for LogicalKafkaScan

Source§

impl PredicatePushdown for LogicalLimit

Source§

impl PredicatePushdown for LogicalMaxOneRow

Source§

impl PredicatePushdown for LogicalMultiJoin

Source§

impl PredicatePushdown for LogicalMySqlQuery

Source§

impl PredicatePushdown for LogicalNow

Source§

impl PredicatePushdown for LogicalOverWindow

Source§

impl PredicatePushdown for LogicalPostgresQuery

Source§

impl PredicatePushdown for LogicalProject

Source§

impl PredicatePushdown for LogicalProjectSet

Source§

impl PredicatePushdown for LogicalRecursiveUnion

Source§

impl PredicatePushdown for LogicalScan

Source§

impl PredicatePushdown for LogicalShare

Source§

impl PredicatePushdown for LogicalSource

Source§

impl PredicatePushdown for LogicalSysScan

Source§

impl PredicatePushdown for LogicalTableFunction

Source§

impl PredicatePushdown for LogicalTopN

Source§

impl PredicatePushdown for LogicalUnion

Source§

impl PredicatePushdown for LogicalUpdate

Source§

impl PredicatePushdown for LogicalValues

Source§

impl PredicatePushdown for LogicalPlanRef