(&'a self, v: &'a CopyStatement<T>)
| 597 | } |
| 598 | |
| 599 | pub(crate) fn doc_copy<'a, T: AstInfo>(&'a self, v: &'a CopyStatement<T>) -> RcDoc<'a> { |
| 600 | let relation = match &v.relation { |
| 601 | CopyRelation::Named { name, columns } => { |
| 602 | let mut relation = self.doc_display_pass(name); |
| 603 | if !columns.is_empty() { |
| 604 | relation = bracket_doc( |
| 605 | nest(relation, RcDoc::text("(")), |
| 606 | comma_separate(|c| self.doc_display_pass(c), columns), |
| 607 | RcDoc::text(")"), |
| 608 | RcDoc::line_(), |
| 609 | ); |
| 610 | } |
| 611 | RcDoc::concat([RcDoc::text("COPY "), relation]) |
| 612 | } |
| 613 | CopyRelation::Select(query) => bracket("COPY (", self.doc_select_statement(query), ")"), |
| 614 | CopyRelation::Subscribe(query) => bracket("COPY (", self.doc_subscribe(query), ")"), |
| 615 | }; |
| 616 | let mut docs = vec![ |
| 617 | relation, |
| 618 | RcDoc::concat([ |
| 619 | self.doc_display_pass(&v.direction), |
| 620 | RcDoc::text(" "), |
| 621 | self.doc_display_pass(&v.target), |
| 622 | ]), |
| 623 | ]; |
| 624 | if !v.options.is_empty() { |
| 625 | docs.push(bracket( |
| 626 | "WITH (", |
| 627 | comma_separate(|o| self.doc_display_pass(o), &v.options), |
| 628 | ")", |
| 629 | )); |
| 630 | } |
| 631 | RcDoc::intersperse(docs, Doc::line()).group() |
| 632 | } |
| 633 | |
| 634 | pub(crate) fn doc_subscribe<'a, T: AstInfo>( |
| 635 | &'a self, |
no test coverage detected