Parse an ALTER SINK statement.
(&mut self)
| 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) |
no test coverage detected