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

Method parse_prepare

src/sql-parser/src/parser.rs:9341–9365  ·  view source on GitHub ↗

Parse a `PREPARE` statement, assuming that the `PREPARE` token has already been consumed.

(&mut self)

Source from the content-addressed store, hash-verified

9339 /// Parse a `PREPARE` statement, assuming that the `PREPARE` token
9340 /// has already been consumed.
9341 fn parse_prepare(&mut self) -> Result<Statement<Raw>, ParserStatementError> {
9342 let name = self
9343 .parse_identifier()
9344 .map_parser_err(StatementKind::Prepare)?;
9345 self.expect_keyword(AS)
9346 .map_parser_err(StatementKind::Prepare)?;
9347 let pos = self.peek_pos();
9348 //
9349 let StatementParseResult { ast, sql } = self.parse_statement()?;
9350 if !matches!(
9351 ast,
9352 Statement::Select(_)
9353 | Statement::Insert(_)
9354 | Statement::Delete(_)
9355 | Statement::Update(_)
9356 | Statement::Fetch(_),
9357 ) {
9358 return parser_err!(self, pos, "unpreparable statement").map_no_statement_parser_err();
9359 }
9360 Ok(Statement::Prepare(PrepareStatement {
9361 name,
9362 stmt: Box::new(ast),
9363 sql: sql.to_string(),
9364 }))
9365 }
9366
9367 /// Parse a `EXECUTE` statement, assuming that the `EXECUTE` token
9368 /// has already been consumed.

Callers 1

parse_statement_innerMethod · 0.80

Calls 7

map_parser_errMethod · 0.80
parse_identifierMethod · 0.80
expect_keywordMethod · 0.80
peek_posMethod · 0.80
parse_statementMethod · 0.45
to_stringMethod · 0.45

Tested by

no test coverage detected