optd_core/
optimizer.rs

1
2
3
4
5
6
7
8
9
10
11
use anyhow::Result;

use crate::{
    property::PropertyBuilder,
    rel_node::{RelNodeRef, RelNodeTyp},
};

pub trait Optimizer<T: RelNodeTyp> {
    fn optimize(&mut self, root_rel: RelNodeRef<T>) -> Result<RelNodeRef<T>>;
    fn get_property<P: PropertyBuilder<T>>(&self, root_rel: RelNodeRef<T>, idx: usize) -> P::Prop;
}