This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a commit to branch 
gh-readonly-queue/main/pr-2207-4b4a9d7411f7a855999069e6a0d10202cdcab7b9
in repository https://gitbox.apache.org/repos/asf/datafusion-sqlparser-rs.git

commit 6a48f44f99d015a4f7a86275e2521ea2cc45fdae
Author: Alex <[email protected]>
AuthorDate: Sat Feb 14 14:55:57 2026 +0800

    Updated `parse_infix(..)` in `mysql.rs` and `sqlite.rs` to handle error 
rather than `unwrap()` (#2207)
---
 src/dialect/mysql.rs     | 9 +++++++--
 tests/sqlparser_mysql.rs | 8 ++++++++
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/src/dialect/mysql.rs b/src/dialect/mysql.rs
index 51a43f89..b31a2310 100644
--- a/src/dialect/mysql.rs
+++ b/src/dialect/mysql.rs
@@ -102,10 +102,15 @@ impl Dialect for MySqlDialect {
     ) -> Option<Result<crate::ast::Expr, ParserError>> {
         // Parse DIV as an operator
         if parser.parse_keyword(Keyword::DIV) {
+            let left = Box::new(expr.clone());
+            let right = Box::new(match parser.parse_expr() {
+                Ok(expr) => expr,
+                Err(e) => return Some(Err(e)),
+            });
             Some(Ok(Expr::BinaryOp {
-                left: Box::new(expr.clone()),
+                left,
                 op: BinaryOperator::MyIntegerDivide,
-                right: Box::new(parser.parse_expr().unwrap()),
+                right,
             }))
         } else {
             None
diff --git a/tests/sqlparser_mysql.rs b/tests/sqlparser_mysql.rs
index 1b9d12f8..4ad0404b 100644
--- a/tests/sqlparser_mysql.rs
+++ b/tests/sqlparser_mysql.rs
@@ -3627,6 +3627,14 @@ fn parse_div_infix() {
     mysql().verified_stmt(r#"SELECT 5 DIV 2"#);
 }
 
+#[test]
+fn parse_div_infix_propagates_parse_error() {
+    let err = mysql()
+        .parse_sql_statements("SELECT 5 DIV")
+        .expect_err("expected an error");
+    assert_matches!(err, ParserError::ParserError(_));
+}
+
 #[test]
 fn parse_drop_temporary_table() {
     let sql = "DROP TEMPORARY TABLE foo";


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

Reply via email to