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

Method parse_alter_sink

src/sql-parser/src/parser.rs:6144–6231  ·  view source on GitHub ↗

Parse an ALTER SINK statement.

(&mut self)

Source from the content-addressed store, hash-verified

6142
6143 /// Parse an ALTER SINK statement.
6144 fn parse_alter_sink(&mut self) -> Result<Statement<Raw>, ParserStatementError> {
6145 let if_exists = self.parse_if_exists().map_no_statement_parser_err()?;
6146 let name = self.parse_item_name().map_no_statement_parser_err()?;
6147
6148 Ok(
6149 match self
6150 .expect_one_of_keywords(&[RESET, SET, RENAME, OWNER])
6151 .map_no_statement_parser_err()?
6152 {
6153 RESET => {
6154 self.expect_token(&Token::LParen)
6155 .map_parser_err(StatementKind::AlterSink)?;
6156 let reset_options = self
6157 .parse_comma_separated(Parser::parse_create_sink_option_name)
6158 .map_parser_err(StatementKind::AlterSink)?;
6159 self.expect_token(&Token::RParen)
6160 .map_parser_err(StatementKind::AlterSink)?;
6161
6162 Statement::AlterSink(AlterSinkStatement {
6163 sink_name: name,
6164 if_exists,
6165 action: AlterSinkAction::ResetOptions(reset_options),
6166 })
6167 }
6168 SET => {
6169 if let Some(result) =
6170 self.maybe_parse_alter_set_cluster(if_exists, &name, ObjectType::Sink)
6171 {
6172 return result;
6173 }
6174
6175 if self.parse_keyword(FROM) {
6176 let from = self
6177 .parse_raw_name()
6178 .map_parser_err(StatementKind::AlterSink)?;
6179
6180 Statement::AlterSink(AlterSinkStatement {
6181 sink_name: name,
6182 if_exists,
6183 action: AlterSinkAction::ChangeRelation(from),
6184 })
6185 } else {
6186 self.expect_token(&Token::LParen)
6187 .map_parser_err(StatementKind::AlterSink)?;
6188 let set_options = self
6189 .parse_comma_separated(Parser::parse_create_sink_option)
6190 .map_parser_err(StatementKind::AlterSink)?;
6191 self.expect_token(&Token::RParen)
6192 .map_parser_err(StatementKind::AlterSink)?;
6193 Statement::AlterSink(AlterSinkStatement {
6194 sink_name: name,
6195 if_exists,
6196 action: AlterSinkAction::SetOptions(set_options),
6197 })
6198 }
6199 }
6200 RENAME => {
6201 self.expect_keyword(TO)

Callers 1

parse_alter_objectMethod · 0.80

Calls 14

AlterSinkClass · 0.85
parse_if_existsMethod · 0.80
parse_item_nameMethod · 0.80
map_parser_errMethod · 0.80
expect_tokenMethod · 0.80
parse_comma_separatedMethod · 0.80
parse_keywordMethod · 0.80
parse_raw_nameMethod · 0.80
expect_keywordMethod · 0.80

Tested by

no test coverage detected