RPG-Alex opened a new pull request, #2207:
URL: https://github.com/apache/datafusion-sqlparser-rs/pull/2207

   Previously for both `sqlite` and `mysql` the `parse_infix` would panic if 
passed `parser: &mut crate::parser::Parser` returned an error:
   ```rust
       fn parse_infix(
           &self,
           parser: &mut crate::parser::Parser,
           expr: &crate::ast::Expr,
           _precedence: u8,
       ) -> Option<Result<crate::ast::Expr, ParserError>> {
           // Parse DIV as an operator
           if parser.parse_keyword(Keyword::DIV) {
               Some(Ok(Expr::BinaryOp {
                   left: Box::new(expr.clone()),
                   op: BinaryOperator::MyIntegerDivide,
                   right: Box::new(parser.parse_expr().unwrap()),
               }))
           } else {
               None
           }
       }
   ```
   Now Errors are being passed, and the `parse_expr()` error returned will be 
returned for `parse_infix` rather than panic:
   ```rust
       fn parse_infix(
           &self,
           parser: &mut crate::parser::Parser,
           expr: &crate::ast::Expr,
           _precedence: u8,
       ) -> Option<Result<crate::ast::Expr, ParserError>> {
           // Parse DIV as an operator
           if parser.parse_keyword(Keyword::DIV) {
               let right = match parser.parse_expr() {
                   Ok(val) => val,
                   Err(e) => return Some(Err(e)),
               };
               Some(Ok(Expr::BinaryOp {
                   left: Box::new(expr.clone()),
                   op: BinaryOperator::MyIntegerDivide,
                   right: Box::new(right),
               }))
           } else {
               None
           }
       }
   ```


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to