Skip to main content

uqa_planner/filter_pushdown/
context.rs

1//
2// Unified Query Algebra
3//
4// Copyright (c) 2023-2026 Cognica, Inc.
5//
6
7//! Read-only semantic and catalog inputs for predicate placement.
8
9use uqa_sql::{
10    binding::correlation::CorrelationContext,
11    catalog::{analysis::AnalysisCatalog, resolution::RelationNameResolution},
12    plan::UnifiedPlan,
13    semantics::volatility::VolatilityCatalog,
14    SQLError,
15};
16
17#[derive(Clone, Copy)]
18pub struct FilterPushdownContext<'a> {
19    pub volatility: &'a dyn VolatilityCatalog,
20    pub correlation: CorrelationContext<'a>,
21    pub optimizer: &'a dyn Fn(UnifiedPlan) -> Result<UnifiedPlan, SQLError>,
22}
23
24#[derive(Clone, Copy)]
25pub struct FilterPushdownScope<'a> {
26    pub catalog: &'a dyn AnalysisCatalog,
27    pub resolution: &'a RelationNameResolution,
28    pub is_visible_cte: &'a dyn Fn(&str) -> bool,
29}