File tree Expand file tree Collapse file tree 2 files changed +18
-0
lines changed Expand file tree Collapse file tree 2 files changed +18
-0
lines changed Original file line number Diff line number Diff line change @@ -19,6 +19,7 @@ use crate::ast::Statement;
19
19
use crate :: dialect:: Dialect ;
20
20
use crate :: keywords:: Keyword ;
21
21
use crate :: parser:: { Parser , ParserError } ;
22
+ use crate :: tokenizer:: Token ;
22
23
23
24
/// These keywords are disallowed as column identifiers. Such that
24
25
/// `SELECT 5 AS <col> FROM T` is rejected by BigQuery.
@@ -47,6 +48,13 @@ pub struct BigQueryDialect;
47
48
impl Dialect for BigQueryDialect {
48
49
fn parse_statement ( & self , parser : & mut Parser ) -> Option < Result < Statement , ParserError > > {
49
50
if parser. parse_keyword ( Keyword :: BEGIN ) {
51
+ if parser. peek_keyword ( Keyword :: TRANSACTION )
52
+ || parser. peek_token_ref ( ) . token == Token :: SemiColon
53
+ || parser. peek_token_ref ( ) . token == Token :: EOF
54
+ {
55
+ parser. prev_token ( ) ;
56
+ return None ;
57
+ }
50
58
return Some ( parser. parse_begin_exception_end ( ) ) ;
51
59
}
52
60
Original file line number Diff line number Diff line change @@ -2566,3 +2566,13 @@ fn test_struct_trailing_and_nested_bracket() {
2566
2566
)
2567
2567
) ;
2568
2568
}
2569
+
2570
+ #[ test]
2571
+ fn test_begin_transaction ( ) {
2572
+ bigquery ( ) . verified_stmt ( "BEGIN TRANSACTION" ) ;
2573
+ }
2574
+
2575
+ #[ test]
2576
+ fn test_begin_statement ( ) {
2577
+ bigquery ( ) . verified_stmt ( "BEGIN" ) ;
2578
+ }
You can’t perform that action at this time.
0 commit comments