Skip to content

Commit 865c191

Browse files
authored
fix: begin statement for bigquery (#1975)
1 parent 145922a commit 865c191

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

src/dialect/bigquery.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ use crate::ast::Statement;
1919
use crate::dialect::Dialect;
2020
use crate::keywords::Keyword;
2121
use crate::parser::{Parser, ParserError};
22+
use crate::tokenizer::Token;
2223

2324
/// These keywords are disallowed as column identifiers. Such that
2425
/// `SELECT 5 AS <col> FROM T` is rejected by BigQuery.
@@ -47,6 +48,13 @@ pub struct BigQueryDialect;
4748
impl Dialect for BigQueryDialect {
4849
fn parse_statement(&self, parser: &mut Parser) -> Option<Result<Statement, ParserError>> {
4950
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+
}
5058
return Some(parser.parse_begin_exception_end());
5159
}
5260

tests/sqlparser_bigquery.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2566,3 +2566,13 @@ fn test_struct_trailing_and_nested_bracket() {
25662566
)
25672567
);
25682568
}
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+
}

0 commit comments

Comments
 (0)