Skip to main content

Module pushdown

Module pushdown 

Source
Expand description

Predicate Pushdown Framework

This module provides a clean, extensible architecture for predicate pushdown. Each pushdown rule is self-contained and implements the PushdownRule trait.

§Adding a New Pushdown Rule

  1. Create a new struct implementing PushdownRule
  2. Register it in PushdownRegistry::new()
  3. Done!

§Example

pub struct MyCustomRule;

impl PushdownRule for MyCustomRule {
    fn name(&self) -> &'static str { "my_custom_rule" }

    fn try_convert(
        &self,
        expr: &ast::Expression,
        ctx: &PushdownContext<'_>,
    ) -> PushdownResult {
        // Check if this rule applies and convert
    }
}

Structs§

PushdownContext
Context for pushdown operations
PushdownPlan
PushdownRegistry
Registry of all pushdown rules

Enums§

PushdownResult
Result of a pushdown attempt

Traits§

PushdownRule
Trait for pushdown rules

Functions§

registry
Get the global pushdown registry
try_pushdown
Convenience function to try pushdown using the global registry
try_pushdown_plan