use std::sync::Arc;
use crate::executor::streaming::plan::types::PhysicalPlan;
use linkrs_core::types::expr::Expression;
#[derive(Debug, Clone)]
pub enum ApplySpec {
Apply {
kind: ApplyKind,
correlated_columns: Vec<String>,
},
PatternApply {
hash_keys: Vec<Expression>,
probe_keys: Vec<Expression>,
anti: bool,
},
CorrelatedApply {
sub_plan: Arc<PhysicalPlan>,
anti: bool,
},
RollUpApply {
compare_columns: Vec<String>,
collect_column: Option<String>,
},
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ApplyKind {
Standard,
Semi,
Anti,
Single,
All,
}