File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -897,12 +897,12 @@ impl<'a> Parser<'a> {
897897
898898 /// Parse a new expression.
899899 pub fn parse_expr ( & mut self ) -> Result < Expr , ParserError > {
900- let _guard = self . recursion_counter . try_decrease ( ) ?;
901900 self . parse_subexpr ( self . dialect . prec_unknown ( ) )
902901 }
903902
904903 /// Parse tokens until the precedence changes.
905904 pub fn parse_subexpr ( & mut self , precedence : u8 ) -> Result < Expr , ParserError > {
905+ let _guard = self . recursion_counter . try_decrease ( ) ?;
906906 debug ! ( "parsing expr" ) ;
907907 let mut expr = self . parse_prefix ( ) ?;
908908 debug ! ( "prefix: {:?}" , expr) ;
Original file line number Diff line number Diff line change @@ -8980,6 +8980,13 @@ fn parse_deeply_nested_parens_hits_recursion_limits() {
89808980 assert_eq ! ( ParserError :: RecursionLimitExceeded , res. unwrap_err( ) ) ;
89818981}
89828982
8983+ #[ test]
8984+ fn parse_deeply_nested_unary_op_hits_recursion_limits ( ) {
8985+ let sql = format ! ( "SELECT {}" , "+" . repeat( 1000 ) ) ;
8986+ let res = parse_sql_statements ( & sql) ;
8987+ assert_eq ! ( ParserError :: RecursionLimitExceeded , res. unwrap_err( ) ) ;
8988+ }
8989+
89838990#[ test]
89848991fn parse_deeply_nested_expr_hits_recursion_limits ( ) {
89858992 let dialect = GenericDialect { } ;
You can’t perform that action at this time.
0 commit comments