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

Method parse_create_kafka_sink

src/sql-parser/src/parser.rs:3512–3558  ·  view source on GitHub ↗
(
        &mut self,
        name: Option<UnresolvedItemName>,
        in_cluster: Option<RawClusterName>,
        from: RawItemName,
        if_not_exists: bool,
        connection: CreateSinkConnect

Source from the content-addressed store, hash-verified

3510 }
3511
3512 fn parse_create_kafka_sink(
3513 &mut self,
3514 name: Option<UnresolvedItemName>,
3515 in_cluster: Option<RawClusterName>,
3516 from: RawItemName,
3517 if_not_exists: bool,
3518 connection: CreateSinkConnection<Raw>,
3519 ) -> Result<CreateSinkStatement<Raw>, ParserError> {
3520 let format = match &self.parse_one_of_keywords(&[KEY, FORMAT]) {
3521 Some(KEY) => {
3522 self.expect_keyword(FORMAT)?;
3523 let key = self.parse_format()?;
3524 self.expect_keywords(&[VALUE, FORMAT])?;
3525 let value = self.parse_format()?;
3526 Some(FormatSpecifier::KeyValue { key, value })
3527 }
3528 Some(FORMAT) => Some(FormatSpecifier::Bare(self.parse_format()?)),
3529 Some(_) => unreachable!("parse_one_of_keywords returns None for this"),
3530 None => None,
3531 };
3532 let envelope = if self.parse_keyword(ENVELOPE) {
3533 Some(self.parse_sink_envelope()?)
3534 } else {
3535 None
3536 };
3537
3538 let with_options = if self.parse_keyword(WITH) {
3539 self.expect_token(&Token::LParen)?;
3540 let options = self.parse_comma_separated(Parser::parse_create_sink_option)?;
3541 self.expect_token(&Token::RParen)?;
3542 options
3543 } else {
3544 vec![]
3545 };
3546
3547 Ok(CreateSinkStatement {
3548 name,
3549 in_cluster,
3550 from,
3551 connection,
3552 format,
3553 envelope,
3554 mode: None,
3555 if_not_exists,
3556 with_options,
3557 })
3558 }
3559
3560 fn parse_create_sink(&mut self) -> Result<Statement<Raw>, ParserError> {
3561 self.expect_keyword(SINK)?;

Callers 1

parse_create_sinkMethod · 0.80

Calls 8

parse_one_of_keywordsMethod · 0.80
expect_keywordMethod · 0.80
parse_formatMethod · 0.80
expect_keywordsMethod · 0.80
parse_keywordMethod · 0.80
parse_sink_envelopeMethod · 0.80
expect_tokenMethod · 0.80
parse_comma_separatedMethod · 0.80

Tested by

no test coverage detected