Skip to content

Commit 9169e57

Browse files
committed
Code review feedback
1 parent 4d0a832 commit 9169e57

File tree

3 files changed

+26
-3
lines changed

3 files changed

+26
-3
lines changed

src/parser/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ pub struct ParserOptions {
223223
/// [`Tokenizer::with_unescape`] for more details.
224224
pub unescape: bool,
225225
/// Controls if the parser expects a semi-colon token
226-
/// between statements.
226+
/// between statements. Default is `true`.
227227
pub require_semicolon_stmt_delimiter: bool,
228228
}
229229

src/test_utils.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -294,6 +294,11 @@ pub fn all_dialects() -> TestedDialects {
294294
])
295295
}
296296

297+
// Returns all available dialects with the specified parser options
298+
pub fn all_dialects_with_options(options: ParserOptions) -> TestedDialects {
299+
TestedDialects::new_with_options(all_dialects().dialects, options)
300+
}
301+
297302
/// Returns all dialects matching the given predicate.
298303
pub fn all_dialects_where<F>(predicate: F) -> TestedDialects
299304
where

tests/sqlparser_common.rs

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,9 @@ use sqlparser::parser::{Parser, ParserError, ParserOptions};
4040
use sqlparser::tokenizer::Tokenizer;
4141
use sqlparser::tokenizer::{Location, Span};
4242
use test_utils::{
43-
all_dialects, all_dialects_where, alter_table_op, assert_eq_vec, call, expr_from_projection,
44-
join, number, only, table, table_alias, table_from_name, TestedDialects,
43+
all_dialects, all_dialects_where, all_dialects_with_options, alter_table_op, assert_eq_vec,
44+
call, expr_from_projection, join, number, only, table, table_alias, table_from_name,
45+
TestedDialects,
4546
};
4647

4748
#[macro_use]
@@ -16115,3 +16116,20 @@ fn test_select_exclude() {
1611516116
ParserError::ParserError("Expected: end of statement, found: EXCLUDE".to_string())
1611616117
);
1611716118
}
16119+
16120+
#[test]
16121+
fn test_no_semicolon_required_between_statements() {
16122+
let sql = r#"
16123+
SELECT * FROM tbl1
16124+
SELECT * FROM tbl2
16125+
"#;
16126+
16127+
let dialects = all_dialects_with_options(ParserOptions {
16128+
trailing_commas: false,
16129+
unescape: true,
16130+
require_semicolon_stmt_delimiter: false,
16131+
});
16132+
let stmts = dialects.parse_sql_statements(sql).unwrap();
16133+
assert_eq!(stmts.len(), 2);
16134+
assert!(stmts.iter().all(|s| matches!(s, Statement::Query { .. })));
16135+
}

0 commit comments

Comments
 (0)