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

Method parse_alter_object

src/sql-parser/src/parser.rs:5636–5739  ·  view source on GitHub ↗
(&mut self)

Source from the content-addressed store, hash-verified

5634 }
5635
5636 fn parse_alter_object(&mut self) -> Result<Statement<Raw>, ParserStatementError> {
5637 let object_type = self.expect_object_type().map_no_statement_parser_err()?;
5638
5639 match object_type {
5640 ObjectType::Role => self
5641 .parse_alter_role()
5642 .map_parser_err(StatementKind::AlterRole),
5643 ObjectType::Sink => self.parse_alter_sink(),
5644 ObjectType::Source => self.parse_alter_source(),
5645 ObjectType::Index => self.parse_alter_index(),
5646 ObjectType::Secret => self.parse_alter_secret(),
5647 ObjectType::Connection => self.parse_alter_connection(),
5648 ObjectType::View | ObjectType::MaterializedView | ObjectType::Table => {
5649 self.parse_alter_views(object_type)
5650 }
5651 ObjectType::Type => {
5652 let if_exists = self
5653 .parse_if_exists()
5654 .map_parser_err(StatementKind::AlterOwner)?;
5655 let name = UnresolvedObjectName::Item(
5656 self.parse_item_name()
5657 .map_parser_err(StatementKind::AlterOwner)?,
5658 );
5659 self.expect_keywords(&[OWNER, TO])
5660 .map_parser_err(StatementKind::AlterOwner)?;
5661 let new_owner = self
5662 .parse_identifier()
5663 .map_parser_err(StatementKind::AlterOwner)?;
5664 Ok(Statement::AlterOwner(AlterOwnerStatement {
5665 object_type,
5666 if_exists,
5667 name,
5668 new_owner,
5669 }))
5670 }
5671 ObjectType::Cluster => self.parse_alter_cluster(object_type),
5672 ObjectType::ClusterReplica => {
5673 let if_exists = self.parse_if_exists().map_no_statement_parser_err()?;
5674 let name = UnresolvedObjectName::ClusterReplica(
5675 self.parse_cluster_replica_name()
5676 .map_no_statement_parser_err()?,
5677 );
5678 let action = self
5679 .expect_one_of_keywords(&[OWNER, RENAME])
5680 .map_no_statement_parser_err()?;
5681 self.expect_keyword(TO).map_no_statement_parser_err()?;
5682 match action {
5683 OWNER => {
5684 let new_owner = self
5685 .parse_identifier()
5686 .map_parser_err(StatementKind::AlterOwner)?;
5687 Ok(Statement::AlterOwner(AlterOwnerStatement {
5688 object_type,
5689 if_exists,
5690 name,
5691 new_owner,
5692 }))
5693 }

Callers 1

parse_alterMethod · 0.80

Calls 15

expect_object_typeMethod · 0.80
map_parser_errMethod · 0.80
parse_alter_roleMethod · 0.80
parse_alter_sinkMethod · 0.80
parse_alter_sourceMethod · 0.80
parse_alter_indexMethod · 0.80
parse_alter_secretMethod · 0.80
parse_alter_viewsMethod · 0.80
parse_if_existsMethod · 0.80
parse_item_nameMethod · 0.80

Tested by

no test coverage detected