@@ -2329,25 +2329,21 @@ impl<'a> Parser<'a> {
23292329
23302330 /// Syntax
23312331 /// ```sql
2332- /// -- typed, specific to bigquery
2332+ /// -- typed
23332333 /// STRUCT<[field_name] field_type, ...>( expr1 [, ... ])
23342334 /// -- typeless
23352335 /// STRUCT( expr1 [AS field_name] [, ... ])
23362336 /// ```
23372337 fn parse_struct_literal(&mut self) -> Result<Expr, ParserError> {
2338- let mut fields = vec![];
2339- // Typed struct syntax is only supported by BigQuery
2340- // https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#typed_struct_syntax
2341- if self.dialect.supports_typed_struct_syntax() {
2342- self.prev_token();
2343- let trailing_bracket;
2344- (fields, trailing_bracket) =
2345- self.parse_struct_type_def(Self::parse_struct_field_def)?;
2346- if trailing_bracket.0 {
2347- return parser_err!("unmatched > in STRUCT literal", self.peek_token().location);
2348- }
2338+ // Parse the fields definition if exist `<[field_name] field_type, ...>`
2339+ self.prev_token();
2340+ let (fields, trailing_bracket) =
2341+ self.parse_struct_type_def(Self::parse_struct_field_def)?;
2342+ if trailing_bracket.0 {
2343+ return parser_err!("unmatched > in STRUCT literal", self.peek_token().location);
23492344 }
23502345
2346+ // Parse the struct values `(expr1 [, ... ])`
23512347 self.expect_token(&Token::LParen)?;
23522348 let values = self
23532349 .parse_comma_separated(|parser| parser.parse_struct_field_expr(!fields.is_empty()))?;
0 commit comments