Parse a new expression
(&mut self)
| 545 | |
| 546 | /// Parse a new expression |
| 547 | pub fn parse_statement(&mut self) -> Result<Statement, DataFusionError> { |
| 548 | match self.parser.peek_token().token { |
| 549 | Token::Word(w) => { |
| 550 | match w.keyword { |
| 551 | Keyword::CREATE => { |
| 552 | self.parser.next_token(); // CREATE |
| 553 | self.parse_create() |
| 554 | } |
| 555 | Keyword::COPY => { |
| 556 | if let Token::Word(w) = self.parser.peek_nth_token(1).token { |
| 557 | // use native parser for COPY INTO |
| 558 | if w.keyword == Keyword::INTO { |
| 559 | return self.parse_and_handle_statement(); |
| 560 | } |
| 561 | } |
| 562 | self.parser.next_token(); // COPY |
| 563 | self.parse_copy() |
| 564 | } |
| 565 | Keyword::EXPLAIN => { |
| 566 | self.parser.next_token(); // EXPLAIN |
| 567 | self.parse_explain() |
| 568 | } |
| 569 | Keyword::RESET => { |
| 570 | self.parser.next_token(); // RESET |
| 571 | self.parse_reset() |
| 572 | } |
| 573 | _ => { |
| 574 | // use sqlparser-rs parser |
| 575 | self.parse_and_handle_statement() |
| 576 | } |
| 577 | } |
| 578 | } |
| 579 | _ => { |
| 580 | // use the native parser |
| 581 | self.parse_and_handle_statement() |
| 582 | } |
| 583 | } |
| 584 | } |
| 585 | |
| 586 | pub fn parse_expr(&mut self) -> Result<ExprWithAlias, DataFusionError> { |
| 587 | if let Token::Word(w) = self.parser.peek_token().token { |