MCPcopy Create free account
hub / github.com/apache/datafusion / parse_relation_join

Method parse_relation_join

datafusion/sql/src/relation/join.rs:46–103  ·  view source on GitHub ↗
(
        &self,
        left: LogicalPlan,
        join: Join,
        planner_context: &mut PlannerContext,
    )

Source from the content-addressed store, hash-verified

44 }
45
46 pub(crate) fn parse_relation_join(
47 &self,
48 left: LogicalPlan,
49 join: Join,
50 planner_context: &mut PlannerContext,
51 ) -> Result<LogicalPlan> {
52 let right = if is_lateral_join(&join)? {
53 self.create_relation_subquery(join.relation, planner_context)?
54 } else {
55 self.create_relation(join.relation, planner_context)?
56 };
57 match join.join_operator {
58 JoinOperator::LeftOuter(constraint) | JoinOperator::Left(constraint) => {
59 self.parse_join(left, right, constraint, JoinType::Left, planner_context)
60 }
61 JoinOperator::RightOuter(constraint) | JoinOperator::Right(constraint) => {
62 self.parse_join(left, right, constraint, JoinType::Right, planner_context)
63 }
64 JoinOperator::Inner(constraint) | JoinOperator::Join(constraint) => {
65 self.parse_join(left, right, constraint, JoinType::Inner, planner_context)
66 }
67 JoinOperator::LeftSemi(constraint) => self.parse_join(
68 left,
69 right,
70 constraint,
71 JoinType::LeftSemi,
72 planner_context,
73 ),
74 JoinOperator::RightSemi(constraint) => self.parse_join(
75 left,
76 right,
77 constraint,
78 JoinType::RightSemi,
79 planner_context,
80 ),
81 JoinOperator::LeftAnti(constraint) => self.parse_join(
82 left,
83 right,
84 constraint,
85 JoinType::LeftAnti,
86 planner_context,
87 ),
88 JoinOperator::RightAnti(constraint) => self.parse_join(
89 left,
90 right,
91 constraint,
92 JoinType::RightAnti,
93 planner_context,
94 ),
95 JoinOperator::FullOuter(constraint) => {
96 self.parse_join(left, right, constraint, JoinType::Full, planner_context)
97 }
98 JoinOperator::CrossJoin(JoinConstraint::None) => {
99 self.parse_cross_join(left, right)
100 }
101 other => not_impl_err!("Unsupported JOIN operator {other:?}"),
102 }
103 }

Callers 2

pipe_operatorMethod · 0.80
plan_table_with_joinsMethod · 0.80

Calls 5

is_lateral_joinFunction · 0.85
create_relationMethod · 0.80
parse_joinMethod · 0.80
parse_cross_joinMethod · 0.80

Tested by

no test coverage detected