MCPcopy Create free account
hub / github.com/MaterializeInc/materialize / doc_copy

Method doc_copy

src/sql-pretty/src/doc.rs:599–632  ·  view source on GitHub ↗
(&'a self, v: &'a CopyStatement<T>)

Source from the content-addressed store, hash-verified

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,

Callers 1

to_docMethod · 0.80

Calls 11

bracket_docFunction · 0.85
nestFunction · 0.85
comma_separateFunction · 0.85
concatFunction · 0.85
bracketFunction · 0.85
doc_display_passMethod · 0.80
doc_select_statementMethod · 0.80
doc_subscribeMethod · 0.80
groupMethod · 0.80
is_emptyMethod · 0.45
pushMethod · 0.45

Tested by

no test coverage detected