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

Method parse_explainee

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

Source from the content-addressed store, hash-verified

8967 }
8968
8969 fn parse_explainee(&mut self) -> Result<Explainee<Raw>, ParserError> {
8970 let explainee = if self.parse_keyword(VIEW) {
8971 // Parse: `VIEW name`
8972 Explainee::View(self.parse_raw_name()?)
8973 } else if self.parse_keywords(&[MATERIALIZED, VIEW]) {
8974 // Parse: `MATERIALIZED VIEW name`
8975 Explainee::MaterializedView(self.parse_raw_name()?)
8976 } else if self.parse_keyword(INDEX) {
8977 // Parse: `INDEX name`
8978 Explainee::Index(self.parse_raw_name()?)
8979 } else if self.parse_keywords(&[REPLAN, VIEW]) {
8980 // Parse: `REPLAN VIEW name`
8981 Explainee::ReplanView(self.parse_raw_name()?)
8982 } else if self.parse_keywords(&[REPLAN, MATERIALIZED, VIEW]) {
8983 // Parse: `REPLAN MATERIALIZED VIEW name`
8984 Explainee::ReplanMaterializedView(self.parse_raw_name()?)
8985 } else if self.parse_keywords(&[REPLAN, INDEX]) {
8986 // Parse: `REPLAN INDEX name`
8987 Explainee::ReplanIndex(self.parse_raw_name()?)
8988 } else {
8989 let broken = self.parse_keyword(BROKEN);
8990
8991 if self.peek_keywords(&[CREATE, VIEW])
8992 || self.peek_keywords(&[CREATE, OR, REPLACE, VIEW])
8993 {
8994 // Parse: `BROKEN? CREATE [OR REPLACE] VIEW ...`
8995 let _ = self.parse_keyword(CREATE); // consume CREATE token
8996 let stmt = match self.parse_create_view()? {
8997 Statement::CreateView(stmt) => stmt,
8998 _ => panic!("Unexpected statement type return after parsing"),
8999 };
9000
9001 Explainee::CreateView(Box::new(stmt), broken)
9002 } else if self.peek_keywords(&[CREATE, MATERIALIZED, VIEW])
9003 || self.peek_keywords(&[CREATE, OR, REPLACE, MATERIALIZED, VIEW])
9004 {
9005 // Parse: `BROKEN? CREATE [OR REPLACE] MATERIALIZED VIEW ...`
9006 let _ = self.parse_keyword(CREATE); // consume CREATE token
9007 let stmt = match self.parse_create_materialized_view()? {
9008 Statement::CreateMaterializedView(stmt) => stmt,
9009 _ => panic!("Unexpected statement type return after parsing"),
9010 };
9011
9012 Explainee::CreateMaterializedView(Box::new(stmt), broken)
9013 } else if self.peek_keywords(&[CREATE, INDEX])
9014 || self.peek_keywords(&[CREATE, DEFAULT, INDEX])
9015 {
9016 // Parse: `BROKEN? CREATE INDEX ...`
9017 let _ = self.parse_keyword(CREATE); // consume CREATE token
9018 let stmt = match self.parse_create_index()? {
9019 Statement::CreateIndex(stmt) => stmt,
9020 _ => panic!("Unexpected statement type return after parsing"),
9021 };
9022
9023 Explainee::CreateIndex(Box::new(stmt), broken)
9024 } else if self.peek_keyword(SUBSCRIBE) {
9025 // Parse: `BROKEN? SUBSCRIBE ...`
9026 let _ = self.parse_keyword(SUBSCRIBE); // consume SUBSCRIBE token

Callers 2

parse_explain_planMethod · 0.80

Calls 15

CreateViewClass · 0.85
SelectClass · 0.85
parse_keywordMethod · 0.80
parse_raw_nameMethod · 0.80
parse_keywordsMethod · 0.80
peek_keywordsMethod · 0.80
parse_create_viewMethod · 0.80
parse_create_indexMethod · 0.80
peek_keywordMethod · 0.80
parse_subscribeMethod · 0.80

Tested by

no test coverage detected