This is an automated email from the ASF dual-hosted git repository.
iffyio pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/datafusion-sqlparser-rs.git
The following commit(s) were added to refs/heads/main by this push:
new 865c191a fix: begin statement for bigquery (#1975)
865c191a is described below
commit 865c191a535ddb3de53e01d1343511a46c77a3db
Author: Chen Chongchen <[email protected]>
AuthorDate: Fri Jul 25 22:56:12 2025 +0800
fix: begin statement for bigquery (#1975)
---
src/dialect/bigquery.rs | 8 ++++++++
tests/sqlparser_bigquery.rs | 10 ++++++++++
2 files changed, 18 insertions(+)
diff --git a/src/dialect/bigquery.rs b/src/dialect/bigquery.rs
index d53c9db0..27fd3cca 100644
--- a/src/dialect/bigquery.rs
+++ b/src/dialect/bigquery.rs
@@ -19,6 +19,7 @@ use crate::ast::Statement;
use crate::dialect::Dialect;
use crate::keywords::Keyword;
use crate::parser::{Parser, ParserError};
+use crate::tokenizer::Token;
/// These keywords are disallowed as column identifiers. Such that
/// `SELECT 5 AS <col> FROM T` is rejected by BigQuery.
@@ -47,6 +48,13 @@ pub struct BigQueryDialect;
impl Dialect for BigQueryDialect {
fn parse_statement(&self, parser: &mut Parser) -> Option<Result<Statement,
ParserError>> {
if parser.parse_keyword(Keyword::BEGIN) {
+ if parser.peek_keyword(Keyword::TRANSACTION)
+ || parser.peek_token_ref().token == Token::SemiColon
+ || parser.peek_token_ref().token == Token::EOF
+ {
+ parser.prev_token();
+ return None;
+ }
return Some(parser.parse_begin_exception_end());
}
diff --git a/tests/sqlparser_bigquery.rs b/tests/sqlparser_bigquery.rs
index 2ba54d3e..bc03011d 100644
--- a/tests/sqlparser_bigquery.rs
+++ b/tests/sqlparser_bigquery.rs
@@ -2566,3 +2566,13 @@ fn test_struct_trailing_and_nested_bracket() {
)
);
}
+
+#[test]
+fn test_begin_transaction() {
+ bigquery().verified_stmt("BEGIN TRANSACTION");
+}
+
+#[test]
+fn test_begin_statement() {
+ bigquery().verified_stmt("BEGIN");
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]