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

Method parse_statements

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

Source from the content-addressed store, hash-verified

388 }
389
390 fn parse_statements(&mut self) -> Result<Vec<StatementParseResult<'a>>, ParserStatementError> {
391 let mut stmts = Vec::new();
392 let mut expecting_statement_delimiter = false;
393 loop {
394 // ignore empty statements (between successive statement delimiters)
395 while self.consume_token(&Token::Semicolon) {
396 expecting_statement_delimiter = false;
397 }
398
399 if self.peek_token().is_none() {
400 break;
401 } else if expecting_statement_delimiter {
402 return self
403 .expected(self.peek_pos(), "end of statement", self.peek_token())
404 .map_no_statement_parser_err();
405 }
406
407 let s = self.parse_statement()?;
408 stmts.push(s);
409 expecting_statement_delimiter = true;
410 }
411 Ok(stmts)
412 }
413 /// Parse a single top-level statement (such as SELECT, INSERT, CREATE, etc.),
414 /// stopping before the statement separator, if any. Returns the parsed statement and the SQL
415 /// fragment corresponding to it.

Callers 1

parse_statementsFunction · 0.80

Calls 8

consume_tokenMethod · 0.80
is_noneMethod · 0.80
peek_tokenMethod · 0.80
expectedMethod · 0.80
peek_posMethod · 0.80
parse_statementMethod · 0.45
pushMethod · 0.45

Tested by

no test coverage detected