Returns `true` if the given [`Join`] is lateral.
(join: &Join)
| 191 | |
| 192 | /// Returns `true` if the given [`Join`] is lateral. |
| 193 | pub(crate) fn is_lateral_join(join: &Join) -> Result<bool> { |
| 194 | let is_lateral_syntax = is_lateral(&join.relation); |
| 195 | let is_apply_syntax = match join.join_operator { |
| 196 | JoinOperator::FullOuter(..) |
| 197 | | JoinOperator::Right(..) |
| 198 | | JoinOperator::RightOuter(..) |
| 199 | | JoinOperator::RightAnti(..) |
| 200 | | JoinOperator::RightSemi(..) |
| 201 | if is_lateral_syntax => |
| 202 | { |
| 203 | return not_impl_err!( |
| 204 | "LATERAL syntax is not supported for \ |
| 205 | FULL OUTER and RIGHT [OUTER | ANTI | SEMI] joins" |
| 206 | ); |
| 207 | } |
| 208 | JoinOperator::CrossApply | JoinOperator::OuterApply => true, |
| 209 | _ => false, |
| 210 | }; |
| 211 | Ok(is_lateral_syntax || is_apply_syntax) |
| 212 | } |
no test coverage detected
searching dependent graphs…