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

Method parse_alter_views

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

Source from the content-addressed store, hash-verified

6467 }
6468
6469 fn parse_alter_views(
6470 &mut self,
6471 object_type: ObjectType,
6472 ) -> Result<Statement<Raw>, ParserStatementError> {
6473 let if_exists = self.parse_if_exists().map_no_statement_parser_err()?;
6474 let name = self.parse_item_name().map_no_statement_parser_err()?;
6475 let keywords: &[_] = match object_type {
6476 ObjectType::Table => &[SET, RENAME, OWNER, RESET, ADD],
6477 ObjectType::MaterializedView => &[SET, RENAME, OWNER, RESET, APPLY],
6478 ObjectType::View => &[SET, RENAME, OWNER, RESET],
6479 ObjectType::Source
6480 | ObjectType::Sink
6481 | ObjectType::Index
6482 | ObjectType::Type
6483 | ObjectType::Role
6484 | ObjectType::Cluster
6485 | ObjectType::ClusterReplica
6486 | ObjectType::Secret
6487 | ObjectType::Connection
6488 | ObjectType::Database
6489 | ObjectType::Schema
6490 | ObjectType::Func
6491 | ObjectType::Subsource
6492 | ObjectType::NetworkPolicy => {
6493 unreachable!("parse_alter_views called with unsupported object type: {object_type}")
6494 }
6495 };
6496
6497 let action = self
6498 .expect_one_of_keywords(keywords)
6499 .map_no_statement_parser_err()?;
6500 match action {
6501 RENAME => {
6502 self.expect_keyword(TO).map_no_statement_parser_err()?;
6503 let to_item_name = self
6504 .parse_identifier()
6505 .map_parser_err(StatementKind::AlterObjectRename)?;
6506 Ok(Statement::AlterObjectRename(AlterObjectRenameStatement {
6507 object_type,
6508 if_exists,
6509 name: UnresolvedObjectName::Item(name),
6510 to_item_name,
6511 }))
6512 }
6513 SET => {
6514 if self.parse_keyword(CLUSTER) {
6515 self.parse_alter_set_cluster(if_exists, name, object_type)
6516 } else {
6517 self.expect_token(&Token::LParen)
6518 .map_no_statement_parser_err()?;
6519 self.expect_keywords(&[RETAIN, HISTORY])
6520 .map_parser_err(StatementKind::AlterRetainHistory)?;
6521 let history = self
6522 .parse_retain_history()
6523 .map_parser_err(StatementKind::AlterRetainHistory)?;
6524 self.expect_token(&Token::RParen)
6525 .map_parser_err(StatementKind::AlterCluster)?;
6526 Ok(Statement::AlterRetainHistory(AlterRetainHistoryStatement {

Callers 1

parse_alter_objectMethod · 0.80

Calls 15

AlterTableAddColumnClass · 0.85
parse_if_existsMethod · 0.80
parse_item_nameMethod · 0.80
expect_keywordMethod · 0.80
map_parser_errMethod · 0.80
parse_identifierMethod · 0.80
parse_keywordMethod · 0.80
expect_tokenMethod · 0.80
expect_keywordsMethod · 0.80

Tested by

no test coverage detected