use linkrs_core::types::expr::Expression;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum BuildSide {
Left,
#[default]
Right,
}
#[derive(Debug, Clone)]
pub enum JoinSpec {
InnerJoin {
join_condition: Option<Expression>,
},
LeftJoin {
join_condition: Option<Expression>,
},
RightJoin {
join_condition: Option<Expression>,
},
FullOuterJoin {
join_condition: Option<Expression>,
},
CrossJoin,
SemiJoin {
join_condition: Option<Expression>,
anti: bool,
},
HashJoin {
join_condition: Option<Expression>,
hash_keys: Vec<Expression>,
probe_keys: Vec<Expression>,
build_side: BuildSide,
},
HashLeftJoin {
join_condition: Option<Expression>,
hash_keys: Vec<Expression>,
probe_keys: Vec<Expression>,
build_side: BuildSide,
},
NestedLoopJoin {
join_condition: Option<Expression>,
},
}