@@ -8344,7 +8344,12 @@ fn lateral_function() {
83448344
83458345#[ test]
83468346fn parse_start_transaction ( ) {
8347- match verified_stmt ( "START TRANSACTION READ ONLY, READ WRITE, ISOLATION LEVEL SERIALIZABLE" ) {
8347+ let dialects = all_dialects_except ( |d|
8348+ // BigQuery does not support this syntax
8349+ d. is :: < BigQueryDialect > ( ) ) ;
8350+ match dialects
8351+ . verified_stmt ( "START TRANSACTION READ ONLY, READ WRITE, ISOLATION LEVEL SERIALIZABLE" )
8352+ {
83488353 Statement :: StartTransaction { modes, .. } => assert_eq ! (
83498354 modes,
83508355 vec![
@@ -8358,7 +8363,7 @@ fn parse_start_transaction() {
83588363
83598364 // For historical reasons, PostgreSQL allows the commas between the modes to
83608365 // be omitted.
8361- match one_statement_parses_to (
8366+ match dialects . one_statement_parses_to (
83628367 "START TRANSACTION READ ONLY READ WRITE ISOLATION LEVEL SERIALIZABLE" ,
83638368 "START TRANSACTION READ ONLY, READ WRITE, ISOLATION LEVEL SERIALIZABLE" ,
83648369 ) {
@@ -8373,40 +8378,40 @@ fn parse_start_transaction() {
83738378 _ => unreachable ! ( ) ,
83748379 }
83758380
8376- verified_stmt ( "START TRANSACTION" ) ;
8377- verified_stmt ( "BEGIN" ) ;
8378- verified_stmt ( "BEGIN WORK" ) ;
8379- verified_stmt ( "BEGIN TRANSACTION" ) ;
8381+ dialects . verified_stmt ( "START TRANSACTION" ) ;
8382+ dialects . verified_stmt ( "BEGIN" ) ;
8383+ dialects . verified_stmt ( "BEGIN WORK" ) ;
8384+ dialects . verified_stmt ( "BEGIN TRANSACTION" ) ;
83808385
8381- verified_stmt ( "START TRANSACTION ISOLATION LEVEL READ UNCOMMITTED" ) ;
8382- verified_stmt ( "START TRANSACTION ISOLATION LEVEL READ COMMITTED" ) ;
8383- verified_stmt ( "START TRANSACTION ISOLATION LEVEL REPEATABLE READ" ) ;
8384- verified_stmt ( "START TRANSACTION ISOLATION LEVEL SERIALIZABLE" ) ;
8386+ dialects . verified_stmt ( "START TRANSACTION ISOLATION LEVEL READ UNCOMMITTED" ) ;
8387+ dialects . verified_stmt ( "START TRANSACTION ISOLATION LEVEL READ COMMITTED" ) ;
8388+ dialects . verified_stmt ( "START TRANSACTION ISOLATION LEVEL REPEATABLE READ" ) ;
8389+ dialects . verified_stmt ( "START TRANSACTION ISOLATION LEVEL SERIALIZABLE" ) ;
83858390
83868391 // Regression test for https://github.com/sqlparser-rs/sqlparser-rs/pull/139,
83878392 // in which START TRANSACTION would fail to parse if followed by a statement
83888393 // terminator.
83898394 assert_eq ! (
8390- parse_sql_statements( "START TRANSACTION; SELECT 1" ) ,
8395+ dialects . parse_sql_statements( "START TRANSACTION; SELECT 1" ) ,
83918396 Ok ( vec![
83928397 verified_stmt( "START TRANSACTION" ) ,
83938398 verified_stmt( "SELECT 1" ) ,
83948399 ] )
83958400 ) ;
83968401
8397- let res = parse_sql_statements ( "START TRANSACTION ISOLATION LEVEL BAD" ) ;
8402+ let res = dialects . parse_sql_statements ( "START TRANSACTION ISOLATION LEVEL BAD" ) ;
83988403 assert_eq ! (
83998404 ParserError :: ParserError ( "Expected: isolation level, found: BAD" . to_string( ) ) ,
84008405 res. unwrap_err( )
84018406 ) ;
84028407
8403- let res = parse_sql_statements ( "START TRANSACTION BAD" ) ;
8408+ let res = dialects . parse_sql_statements ( "START TRANSACTION BAD" ) ;
84048409 assert_eq ! (
84058410 ParserError :: ParserError ( "Expected: end of statement, found: BAD" . to_string( ) ) ,
84068411 res. unwrap_err( )
84078412 ) ;
84088413
8409- let res = parse_sql_statements ( "START TRANSACTION READ ONLY," ) ;
8414+ let res = dialects . parse_sql_statements ( "START TRANSACTION READ ONLY," ) ;
84108415 assert_eq ! (
84118416 ParserError :: ParserError ( "Expected: transaction mode, found: EOF" . to_string( ) ) ,
84128417 res. unwrap_err( )
0 commit comments