@@ -586,7 +586,7 @@ impl<'a> Parser<'a> {
586586 Keyword::DISCARD => self.parse_discard(),
587587 Keyword::DECLARE => self.parse_declare(),
588588 Keyword::FETCH => self.parse_fetch_statement(),
589- Keyword::DELETE => self.parse_delete(),
589+ Keyword::DELETE => self.parse_delete(next_token ),
590590 Keyword::INSERT => self.parse_insert(),
591591 Keyword::REPLACE => self.parse_replace(),
592592 Keyword::UNCACHE => self.parse_uncache_table(),
@@ -11812,8 +11812,8 @@ impl<'a> Parser<'a> {
1181211812 /// Parse a DELETE statement, returning a `Box`ed SetExpr
1181311813 ///
1181411814 /// This is used to reduce the size of the stack frames in debug builds
11815- fn parse_delete_setexpr_boxed(&mut self) -> Result<Box<SetExpr>, ParserError> {
11816- Ok(Box::new(SetExpr::Delete(self.parse_delete()?)))
11815+ fn parse_delete_setexpr_boxed(&mut self, delete_token: TokenWithSpan ) -> Result<Box<SetExpr>, ParserError> {
11816+ Ok(Box::new(SetExpr::Delete(self.parse_delete(delete_token )?)))
1181711817 }
1181811818
1181911819 /// Parse a MERGE statement, returning a `Box`ed SetExpr
@@ -11823,7 +11823,7 @@ impl<'a> Parser<'a> {
1182311823 Ok(Box::new(SetExpr::Merge(self.parse_merge()?)))
1182411824 }
1182511825
11826- pub fn parse_delete(&mut self) -> Result<Statement, ParserError> {
11826+ pub fn parse_delete(&mut self, delete_token: TokenWithSpan ) -> Result<Statement, ParserError> {
1182711827 let (tables, with_from_keyword) = if !self.parse_keyword(Keyword::FROM) {
1182811828 // `FROM` keyword is optional in BigQuery SQL.
1182911829 // https://cloud.google.com/bigquery/docs/reference/standard-sql/dml-syntax#delete_statement
@@ -11866,6 +11866,7 @@ impl<'a> Parser<'a> {
1186611866 };
1186711867
1186811868 Ok(Statement::Delete(Delete {
11869+ delete_token: delete_token.into(),
1186911870 tables,
1187011871 from: if with_from_keyword {
1187111872 FromTable::WithFromKeyword(from)
@@ -12023,7 +12024,7 @@ impl<'a> Parser<'a> {
1202312024 } else if self.parse_keyword(Keyword::DELETE) {
1202412025 Ok(Query {
1202512026 with,
12026- body: self.parse_delete_setexpr_boxed()?,
12027+ body: self.parse_delete_setexpr_boxed(self.get_current_token().clone() )?,
1202712028 limit_clause: None,
1202812029 order_by: None,
1202912030 fetch: None,
0 commit comments