Skip to main content

Module predicate_split

Module predicate_split 

Source
Expand description

Predicate splitting and pushdown for lookup joins. Predicate splitting and pushdown for lookup joins.

This module classifies WHERE/ON predicates in lookup join queries and splits them into pushdown vs local evaluation categories. It implements a DataFusion optimizer rule (PredicateSplitterRule) that absorbs filter nodes above LookupJoinNode and assigns each predicate to the correct execution site.

§Key Safety Rules

  • H10 (LEFT JOIN safety): WHERE-clause predicates on lookup-only columns above a LeftOuter join must NOT be pushed down — doing so changes the semantics by filtering out NULL-extended rows.
  • C7 (qualified columns): When aliases are present, col.relation is checked first for unambiguous resolution before falling back to unqualified column name matching.
  • NotEq predicates are classified normally but are never pushed down (they cannot use equality indexes on the source).

Structs§

PlanSourceCapabilities
Describes a source’s pushdown capabilities for the optimizer.
PredicateClassifier
Classifies predicates based on column membership.
PredicateSplitterRule
DataFusion optimizer rule that splits predicates for lookup joins.
SourceCapabilitiesRegistry
Registry mapping lookup table names to their source capabilities.

Enums§

PlanPushdownMode
Mode describing how far predicates can be pushed to a source.
PredicateClass
Classification of a predicate based on which side(s) it references.

Functions§

split_conjunction
Splits a conjunction (AND chain) into individual predicates.