Skip to content

Commit d4fb5c3

Browse files
authored
Key Value Options: add support for trailing semicolon (#2140)
1 parent ab76a07 commit d4fb5c3

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

src/parser/mod.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18780,7 +18780,7 @@ impl<'a> Parser<'a> {
1878018780
return self.expected(" another option or EOF", self.peek_token());
1878118781
}
1878218782
}
18783-
Token::EOF => break,
18783+
Token::EOF | Token::SemiColon => break,
1878418784
Token::Comma => {
1878518785
delimiter = KeyValueOptionsDelimiter::Comma;
1878618786
continue;
@@ -18792,7 +18792,12 @@ impl<'a> Parser<'a> {
1879218792
self.prev_token();
1879318793
break;
1879418794
}
18795-
_ => return self.expected("another option, EOF, Comma or ')'", self.peek_token()),
18795+
_ => {
18796+
return self.expected(
18797+
"another option, EOF, SemiColon, Comma or ')'",
18798+
self.peek_token(),
18799+
)
18800+
}
1879618801
};
1879718802
}
1879818803

tests/sqlparser_common.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18052,3 +18052,11 @@ fn parse_overlap_as_bool_and() {
1805218052
let dialects = all_dialects_where(|d| d.supports_double_ampersand_operator());
1805318053
dialects.one_statement_parses_to("SELECT x && y", "SELECT x AND y");
1805418054
}
18055+
18056+
#[test]
18057+
fn test_parse_key_value_options_trailing_semicolon() {
18058+
one_statement_parses_to(
18059+
"CREATE USER u1 option1='value1' option2='value2';",
18060+
"CREATE USER u1 option1='value1' option2='value2'",
18061+
);
18062+
}

0 commit comments

Comments
 (0)