Skip to content

Commit 2acb8ce

Browse files
committed
Reduce ambiguity for consecutive statements
- at least all of select/insert/update/delete (plus exec) can be added
1 parent 90bdeed commit 2acb8ce

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

src/keywords.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1097,6 +1097,11 @@ pub const RESERVED_FOR_TABLE_ALIAS: &[Keyword] = &[
10971097
Keyword::TABLESAMPLE,
10981098
Keyword::FROM,
10991099
Keyword::OPEN,
1100+
Keyword::INSERT,
1101+
Keyword::UPDATE,
1102+
Keyword::DELETE,
1103+
Keyword::EXEC,
1104+
Keyword::EXECUTE,
11001105
];
11011106

11021107
/// Can't be used as a column alias, so that `SELECT <expr> alias`

tests/sqlparser_common.rs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -668,6 +668,23 @@ fn parse_select_with_table_alias() {
668668
);
669669
}
670670

671+
#[test]
672+
fn parse_consecutive_queries() {
673+
let select_then_exec = "SELECT * FROM deleted; EXECUTE my_sp 'some', 'params'";
674+
let _ = all_dialects()
675+
.parse_sql_statements(select_then_exec)
676+
.unwrap();
677+
let _ = all_dialects_not_requiring_semicolon_statement_delimiter()
678+
.statements_without_semicolons_parse_to(select_then_exec, "");
679+
680+
let select_then_update = "SELECT 1 FROM x; UPDATE y SET z = 1";
681+
let _ = all_dialects()
682+
.parse_sql_statements(select_then_update)
683+
.unwrap();
684+
let _ = all_dialects_not_requiring_semicolon_statement_delimiter()
685+
.statements_without_semicolons_parse_to(select_then_update, "");
686+
}
687+
671688
#[test]
672689
fn parse_analyze() {
673690
verified_stmt("ANALYZE TABLE test_table");

0 commit comments

Comments
 (0)