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
LeftOuterjoin must NOT be pushed down — doing so changes the semantics by filtering out NULL-extended rows. - C7 (qualified columns): When aliases are present,
col.relationis checked first for unambiguous resolution before falling back to unqualified column name matching. NotEqpredicates are classified normally but are never pushed down (they cannot use equality indexes on the source).
Structs§
- Plan
Source Capabilities - Describes a source’s pushdown capabilities for the optimizer.
- Predicate
Classifier - Classifies predicates based on column membership.
- Predicate
Splitter Rule - DataFusion optimizer rule that splits predicates for lookup joins.
- Source
Capabilities Registry - Registry mapping lookup table names to their source capabilities.
Enums§
- Plan
Pushdown Mode - Mode describing how far predicates can be pushed to a source.
- Predicate
Class - Classification of a predicate based on which side(s) it references.
Functions§
- split_
conjunction - Splits a conjunction (AND chain) into individual predicates.