(&'a self, v: &'a Join<T>)
| 1074 | } |
| 1075 | |
| 1076 | fn doc_join<'a, T: AstInfo>(&'a self, v: &'a Join<T>) -> RcDoc<'a> { |
| 1077 | let (constraint, name) = match &v.join_operator { |
| 1078 | JoinOperator::Inner(constraint) => (constraint, "JOIN"), |
| 1079 | JoinOperator::FullOuter(constraint) => (constraint, "FULL JOIN"), |
| 1080 | JoinOperator::LeftOuter(constraint) => (constraint, "LEFT JOIN"), |
| 1081 | JoinOperator::RightOuter(constraint) => (constraint, "RIGHT JOIN"), |
| 1082 | JoinOperator::CrossJoin => return self.doc_display(v, "join operator"), |
| 1083 | }; |
| 1084 | let constraint = match constraint { |
| 1085 | JoinConstraint::On(expr) => nest_title("ON", self.doc_expr(expr)), |
| 1086 | JoinConstraint::Using { columns, alias } => { |
| 1087 | let mut doc = bracket( |
| 1088 | "USING(", |
| 1089 | comma_separate(|c| self.doc_display_pass(c), columns), |
| 1090 | ")", |
| 1091 | ); |
| 1092 | if let Some(alias) = alias { |
| 1093 | doc = nest(doc, nest_title("AS", self.doc_display_pass(alias))); |
| 1094 | } |
| 1095 | doc |
| 1096 | } |
| 1097 | JoinConstraint::Natural => return self.doc_display(v, "join constraint"), |
| 1098 | }; |
| 1099 | intersperse_line_nest([ |
| 1100 | RcDoc::text(name), |
| 1101 | self.doc_table_factor(&v.relation), |
| 1102 | constraint, |
| 1103 | ]) |
| 1104 | } |
| 1105 | |
| 1106 | fn doc_table_factor<'a, T: AstInfo>(&'a self, v: &'a TableFactor<T>) -> RcDoc<'a> { |
| 1107 | match v { |
no test coverage detected