(&mut self)
| 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 |
no test coverage detected