(
&mut self,
object_type: ObjectType,
)
| 6609 | } |
| 6610 | |
| 6611 | fn parse_alter_schema( |
| 6612 | &mut self, |
| 6613 | object_type: ObjectType, |
| 6614 | ) -> Result<Statement<Raw>, ParserStatementError> { |
| 6615 | let if_exists = self.parse_if_exists().map_no_statement_parser_err()?; |
| 6616 | let name = self.parse_schema_name().map_no_statement_parser_err()?; |
| 6617 | let name = UnresolvedObjectName::Schema(name); |
| 6618 | let action = self |
| 6619 | .expect_one_of_keywords(&[OWNER, RENAME, SWAP]) |
| 6620 | .map_no_statement_parser_err()?; |
| 6621 | |
| 6622 | match action { |
| 6623 | OWNER => { |
| 6624 | self.expect_keyword(TO) |
| 6625 | .map_parser_err(StatementKind::AlterOwner)?; |
| 6626 | let new_owner = self |
| 6627 | .parse_identifier() |
| 6628 | .map_parser_err(StatementKind::AlterOwner)?; |
| 6629 | |
| 6630 | Ok(Statement::AlterOwner(AlterOwnerStatement { |
| 6631 | object_type, |
| 6632 | if_exists, |
| 6633 | name, |
| 6634 | new_owner, |
| 6635 | })) |
| 6636 | } |
| 6637 | RENAME => { |
| 6638 | self.expect_keyword(TO) |
| 6639 | .map_parser_err(StatementKind::AlterObjectRename)?; |
| 6640 | let to_item_name = self |
| 6641 | .parse_identifier() |
| 6642 | .map_parser_err(StatementKind::AlterObjectRename)?; |
| 6643 | |
| 6644 | Ok(Statement::AlterObjectRename(AlterObjectRenameStatement { |
| 6645 | object_type, |
| 6646 | if_exists, |
| 6647 | name, |
| 6648 | to_item_name, |
| 6649 | })) |
| 6650 | } |
| 6651 | SWAP => { |
| 6652 | self.expect_keyword(WITH) |
| 6653 | .map_parser_err(StatementKind::AlterObjectSwap)?; |
| 6654 | let name_b = self |
| 6655 | .parse_identifier() |
| 6656 | .map_parser_err(StatementKind::AlterObjectSwap)?; |
| 6657 | |
| 6658 | Ok(Statement::AlterObjectSwap(AlterObjectSwapStatement { |
| 6659 | object_type, |
| 6660 | if_exists, |
| 6661 | name_a: name, |
| 6662 | name_b, |
| 6663 | })) |
| 6664 | } |
| 6665 | k => unreachable!("programming error, unmatched {k}"), |
| 6666 | } |
| 6667 | } |
| 6668 |
no test coverage detected