linkrs_query/executor/streaming/operators/spec/
join.rs1use linkrs_core::types::expr::Expression;
4
5#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
11pub enum BuildSide {
12 Left,
13 #[default]
14 Right,
15}
16
17#[derive(Debug, Clone)]
19pub enum JoinSpec {
20 InnerJoin {
21 join_condition: Option<Expression>,
22 },
23 LeftJoin {
24 join_condition: Option<Expression>,
25 },
26 RightJoin {
27 join_condition: Option<Expression>,
28 },
29 FullOuterJoin {
30 join_condition: Option<Expression>,
31 },
32 CrossJoin,
33 SemiJoin {
34 join_condition: Option<Expression>,
35 anti: bool,
38 },
39 HashJoin {
40 join_condition: Option<Expression>,
41 hash_keys: Vec<Expression>,
42 probe_keys: Vec<Expression>,
43 build_side: BuildSide,
44 },
45 HashLeftJoin {
46 join_condition: Option<Expression>,
47 hash_keys: Vec<Expression>,
48 probe_keys: Vec<Expression>,
49 build_side: BuildSide,
50 },
51 NestedLoopJoin {
52 join_condition: Option<Expression>,
53 },
54}