Skip to content

Commit bc537fa

Browse files
committed
Allow trailing comma in CREATE TABLE
At least MSSQL supports it, not sure about others.
1 parent 821c67c commit bc537fa

File tree

2 files changed

+12
-11
lines changed

2 files changed

+12
-11
lines changed

src/sqlparser.rs

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -795,17 +795,12 @@ impl Parser {
795795
} else {
796796
return self.expected("column name or constraint definition", self.peek_token());
797797
}
798-
match self.next_token() {
799-
Some(Token::Comma) => {}
800-
Some(Token::RParen) => {
801-
break;
802-
}
803-
other => {
804-
return parser_err!(format!(
805-
"Expected ',' or ')' after column definition but found {:?}",
806-
other
807-
));
808-
}
798+
let comma = self.consume_token(&Token::Comma);
799+
if self.consume_token(&Token::RParen) {
800+
// allow a trailing comma, even though it's not in standard
801+
break;
802+
} else if !comma {
803+
return self.expected("',' or ')' after column definition", self.peek_token());
809804
}
810805
}
811806

tests/sqlparser_common.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -573,6 +573,12 @@ fn parse_create_table() {
573573
}
574574
}
575575

576+
#[test]
577+
fn parse_create_table_trailing_comma() {
578+
let sql = "CREATE TABLE foo (bar int,)";
579+
all_dialects().one_statement_parses_to(sql, "CREATE TABLE foo (bar int)");
580+
}
581+
576582
#[test]
577583
fn parse_create_external_table() {
578584
let sql = "CREATE EXTERNAL TABLE uk_cities (\

0 commit comments

Comments
 (0)