Skip to content

Commit 699960c

Browse files
committed
Fix external table
1 parent 032dcde commit 699960c

1 file changed

Lines changed: 9 additions & 6 deletions

File tree

datafusion/sql/src/parser.rs

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -470,6 +470,12 @@ impl<'a> DFParser<'a> {
470470
Token::Word(w) => {
471471
match w.keyword {
472472
Keyword::CREATE => {
473+
if let Token::Word(w) = self.parser.peek_nth_token(2).token {
474+
// use native parser for CREATE EXTERNAL VOLUME
475+
if w.keyword == Keyword::VOLUME {
476+
/ return self.parse_and_handle_statement();
477+
}
478+
}
473479
self.parser.next_token(); // CREATE
474480
self.parse_create()
475481
}
@@ -695,14 +701,10 @@ impl<'a> DFParser<'a> {
695701

696702
/// Parse a SQL `CREATE` statement handling `CREATE EXTERNAL TABLE`
697703
pub fn parse_create(&mut self) -> Result<Statement, DataFusionError> {
698-
if self
699-
.parser
700-
.parse_keywords(&[Keyword::EXTERNAL, Keyword::TABLE])
701-
{
704+
if self.parser.parse_keyword(Keyword::EXTERNAL) {
702705
self.parse_create_external_table(false)
703706
} else if self.parser.parse_keyword(Keyword::UNBOUNDED) {
704-
self.parser
705-
.expect_keywords(&[Keyword::EXTERNAL, Keyword::TABLE])?;
707+
self.parser.expect_keyword(Keyword::EXTERNAL)?;
706708
self.parse_create_external_table(true)
707709
} else {
708710
// Push back CREATE
@@ -860,6 +862,7 @@ impl<'a> DFParser<'a> {
860862
.parser
861863
.parse_one_of_keywords(&[Keyword::TEMP, Keyword::TEMPORARY])
862864
.is_some();
865+
self.parser.expect_keyword(Keyword::TABLE)?;
863866
let if_not_exists =
864867
self.parser
865868
.parse_keywords(&[Keyword::IF, Keyword::NOT, Keyword::EXISTS]);

0 commit comments

Comments
 (0)