@@ -8343,7 +8343,12 @@ fn lateral_function() {
8343
8343
8344
8344
#[ test]
8345
8345
fn parse_start_transaction ( ) {
8346
- match verified_stmt ( "START TRANSACTION READ ONLY, READ WRITE, ISOLATION LEVEL SERIALIZABLE" ) {
8346
+ let dialects = all_dialects_except ( |d|
8347
+ // BigQuery does not support this syntax
8348
+ d. is :: < BigQueryDialect > ( ) ) ;
8349
+ match dialects
8350
+ . verified_stmt ( "START TRANSACTION READ ONLY, READ WRITE, ISOLATION LEVEL SERIALIZABLE" )
8351
+ {
8347
8352
Statement :: StartTransaction { modes, .. } => assert_eq ! (
8348
8353
modes,
8349
8354
vec![
@@ -8357,7 +8362,7 @@ fn parse_start_transaction() {
8357
8362
8358
8363
// For historical reasons, PostgreSQL allows the commas between the modes to
8359
8364
// be omitted.
8360
- match one_statement_parses_to (
8365
+ match dialects . one_statement_parses_to (
8361
8366
"START TRANSACTION READ ONLY READ WRITE ISOLATION LEVEL SERIALIZABLE" ,
8362
8367
"START TRANSACTION READ ONLY, READ WRITE, ISOLATION LEVEL SERIALIZABLE" ,
8363
8368
) {
@@ -8372,40 +8377,40 @@ fn parse_start_transaction() {
8372
8377
_ => unreachable ! ( ) ,
8373
8378
}
8374
8379
8375
- verified_stmt ( "START TRANSACTION" ) ;
8376
- verified_stmt ( "BEGIN" ) ;
8377
- verified_stmt ( "BEGIN WORK" ) ;
8378
- verified_stmt ( "BEGIN TRANSACTION" ) ;
8380
+ dialects . verified_stmt ( "START TRANSACTION" ) ;
8381
+ dialects . verified_stmt ( "BEGIN" ) ;
8382
+ dialects . verified_stmt ( "BEGIN WORK" ) ;
8383
+ dialects . verified_stmt ( "BEGIN TRANSACTION" ) ;
8379
8384
8380
- verified_stmt ( "START TRANSACTION ISOLATION LEVEL READ UNCOMMITTED" ) ;
8381
- verified_stmt ( "START TRANSACTION ISOLATION LEVEL READ COMMITTED" ) ;
8382
- verified_stmt ( "START TRANSACTION ISOLATION LEVEL REPEATABLE READ" ) ;
8383
- verified_stmt ( "START TRANSACTION ISOLATION LEVEL SERIALIZABLE" ) ;
8385
+ dialects . verified_stmt ( "START TRANSACTION ISOLATION LEVEL READ UNCOMMITTED" ) ;
8386
+ dialects . verified_stmt ( "START TRANSACTION ISOLATION LEVEL READ COMMITTED" ) ;
8387
+ dialects . verified_stmt ( "START TRANSACTION ISOLATION LEVEL REPEATABLE READ" ) ;
8388
+ dialects . verified_stmt ( "START TRANSACTION ISOLATION LEVEL SERIALIZABLE" ) ;
8384
8389
8385
8390
// Regression test for https://github.com/sqlparser-rs/sqlparser-rs/pull/139,
8386
8391
// in which START TRANSACTION would fail to parse if followed by a statement
8387
8392
// terminator.
8388
8393
assert_eq ! (
8389
- parse_sql_statements( "START TRANSACTION; SELECT 1" ) ,
8394
+ dialects . parse_sql_statements( "START TRANSACTION; SELECT 1" ) ,
8390
8395
Ok ( vec![
8391
8396
verified_stmt( "START TRANSACTION" ) ,
8392
8397
verified_stmt( "SELECT 1" ) ,
8393
8398
] )
8394
8399
) ;
8395
8400
8396
- let res = parse_sql_statements ( "START TRANSACTION ISOLATION LEVEL BAD" ) ;
8401
+ let res = dialects . parse_sql_statements ( "START TRANSACTION ISOLATION LEVEL BAD" ) ;
8397
8402
assert_eq ! (
8398
8403
ParserError :: ParserError ( "Expected: isolation level, found: BAD" . to_string( ) ) ,
8399
8404
res. unwrap_err( )
8400
8405
) ;
8401
8406
8402
- let res = parse_sql_statements ( "START TRANSACTION BAD" ) ;
8407
+ let res = dialects . parse_sql_statements ( "START TRANSACTION BAD" ) ;
8403
8408
assert_eq ! (
8404
8409
ParserError :: ParserError ( "Expected: end of statement, found: BAD" . to_string( ) ) ,
8405
8410
res. unwrap_err( )
8406
8411
) ;
8407
8412
8408
- let res = parse_sql_statements ( "START TRANSACTION READ ONLY," ) ;
8413
+ let res = dialects . parse_sql_statements ( "START TRANSACTION READ ONLY," ) ;
8409
8414
assert_eq ! (
8410
8415
ParserError :: ParserError ( "Expected: transaction mode, found: EOF" . to_string( ) ) ,
8411
8416
res. unwrap_err( )
0 commit comments