@@ -8343,7 +8343,12 @@ fn lateral_function() {
83438343
83448344#[ test]
83458345fn 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+ {
83478352 Statement :: StartTransaction { modes, .. } => assert_eq ! (
83488353 modes,
83498354 vec![
@@ -8357,7 +8362,7 @@ fn parse_start_transaction() {
83578362
83588363 // For historical reasons, PostgreSQL allows the commas between the modes to
83598364 // be omitted.
8360- match one_statement_parses_to (
8365+ match dialects . one_statement_parses_to (
83618366 "START TRANSACTION READ ONLY READ WRITE ISOLATION LEVEL SERIALIZABLE" ,
83628367 "START TRANSACTION READ ONLY, READ WRITE, ISOLATION LEVEL SERIALIZABLE" ,
83638368 ) {
@@ -8372,40 +8377,40 @@ fn parse_start_transaction() {
83728377 _ => unreachable ! ( ) ,
83738378 }
83748379
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" ) ;
83798384
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" ) ;
83848389
83858390 // Regression test for https://github.com/sqlparser-rs/sqlparser-rs/pull/139,
83868391 // in which START TRANSACTION would fail to parse if followed by a statement
83878392 // terminator.
83888393 assert_eq ! (
8389- parse_sql_statements( "START TRANSACTION; SELECT 1" ) ,
8394+ dialects . parse_sql_statements( "START TRANSACTION; SELECT 1" ) ,
83908395 Ok ( vec![
83918396 verified_stmt( "START TRANSACTION" ) ,
83928397 verified_stmt( "SELECT 1" ) ,
83938398 ] )
83948399 ) ;
83958400
8396- let res = parse_sql_statements ( "START TRANSACTION ISOLATION LEVEL BAD" ) ;
8401+ let res = dialects . parse_sql_statements ( "START TRANSACTION ISOLATION LEVEL BAD" ) ;
83978402 assert_eq ! (
83988403 ParserError :: ParserError ( "Expected: isolation level, found: BAD" . to_string( ) ) ,
83998404 res. unwrap_err( )
84008405 ) ;
84018406
8402- let res = parse_sql_statements ( "START TRANSACTION BAD" ) ;
8407+ let res = dialects . parse_sql_statements ( "START TRANSACTION BAD" ) ;
84038408 assert_eq ! (
84048409 ParserError :: ParserError ( "Expected: end of statement, found: BAD" . to_string( ) ) ,
84058410 res. unwrap_err( )
84068411 ) ;
84078412
8408- let res = parse_sql_statements ( "START TRANSACTION READ ONLY," ) ;
8413+ let res = dialects . parse_sql_statements ( "START TRANSACTION READ ONLY," ) ;
84098414 assert_eq ! (
84108415 ParserError :: ParserError ( "Expected: transaction mode, found: EOF" . to_string( ) ) ,
84118416 res. unwrap_err( )
0 commit comments