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

Method parse_alter_schema

src/sql-parser/src/parser.rs:6611–6667  ·  view source on GitHub ↗
(
        &mut self,
        object_type: ObjectType,
    )

Source from the content-addressed store, hash-verified

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

Callers 1

parse_alter_objectMethod · 0.80

Calls 8

parse_if_existsMethod · 0.80
parse_schema_nameMethod · 0.80
map_parser_errMethod · 0.80
expect_keywordMethod · 0.80
parse_identifierMethod · 0.80
SchemaClass · 0.50

Tested by

no test coverage detected