File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -9002,7 +9002,15 @@ impl<'a> Parser<'a> {
90029002 /// [ColumnOption::NotNull].
90039003 fn parse_column_option_expr(&mut self) -> Result<Expr, ParserError> {
90049004 if self.peek_token_ref().token == Token::LParen {
9005- let expr: Expr = self.with_state(ParserState::Normal, |p| p.parse_prefix())?;
9005+ let mut expr = self.with_state(ParserState::Normal, |p| p.parse_prefix())?;
9006+ expr = self.parse_compound_expr(expr, vec![])?;
9007+ loop {
9008+ let next_precedence = self.get_next_precedence()?;
9009+ if next_precedence == 0 || self.peek_token_ref().token == Token::Period {
9010+ break;
9011+ }
9012+ expr = self.parse_infix(expr, next_precedence)?;
9013+ }
90069014 Ok(expr)
90079015 } else {
90089016 Ok(self.parse_expr()?)
Original file line number Diff line number Diff line change @@ -512,6 +512,12 @@ fn parse_create_table_with_defaults() {
512512 }
513513}
514514
515+ #[ test]
516+ fn parse_default_expr_parenthesized_then_cast ( ) {
517+ // Infix operators like :: after parenthesized expression in DEFAULT
518+ pg ( ) . verified_stmt ( "CREATE TABLE t (c TEXT DEFAULT (foo())::TEXT)" ) ;
519+ }
520+
515521#[ test]
516522fn parse_create_table_from_pg_dump ( ) {
517523 let sql = "CREATE TABLE public.customer (
You can’t perform that action at this time.
0 commit comments