Parse a sql string into one or [`Statement`]s
(&mut self)
| 489 | |
| 490 | /// Parse a sql string into one or [`Statement`]s |
| 491 | pub fn parse_statements(&mut self) -> Result<VecDeque<Statement>, DataFusionError> { |
| 492 | let mut stmts = VecDeque::new(); |
| 493 | let mut expecting_statement_delimiter = false; |
| 494 | loop { |
| 495 | // ignore empty statements (between successive statement delimiters) |
| 496 | while self.parser.consume_token(&Token::SemiColon) { |
| 497 | expecting_statement_delimiter = false; |
| 498 | } |
| 499 | |
| 500 | if self.parser.peek_token() == Token::EOF { |
| 501 | break; |
| 502 | } |
| 503 | if expecting_statement_delimiter { |
| 504 | return self.expected("end of statement", &self.parser.peek_token()); |
| 505 | } |
| 506 | |
| 507 | let statement = self.parse_statement()?; |
| 508 | stmts.push_back(statement); |
| 509 | expecting_statement_delimiter = true; |
| 510 | } |
| 511 | Ok(stmts) |
| 512 | } |
| 513 | |
| 514 | /// Report an unexpected token |
| 515 | fn expected<T>( |