MCPcopy Create free account
hub / github.com/apache/datafusion / parse_statement

Method parse_statement

datafusion/sql/src/parser.rs:547–584  ·  view source on GitHub ↗

Parse a new expression

(&mut self)

Source from the content-addressed store, hash-verified

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 {

Callers 13

parse_statementsMethod · 0.45
parse_explainMethod · 0.45
do_queryFunction · 0.45
do_queryFunction · 0.45
roundtrip_statementFunction · 0.45
roundtrip_crossjoinFunction · 0.45
test_unnest_logical_planFunction · 0.45

Calls 5

parse_createMethod · 0.80
parse_copyMethod · 0.80
parse_explainMethod · 0.80
parse_resetMethod · 0.80

Tested by 10

do_queryFunction · 0.36
do_queryFunction · 0.36
roundtrip_statementFunction · 0.36
roundtrip_crossjoinFunction · 0.36
test_unnest_logical_planFunction · 0.36