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

yiguolei pushed a commit to branch branch-4.0
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-4.0 by this push:
     new 45a9b104ac4 branch-4.0: [improve](syntax) compatiable with mysql MOD 
syntax #58432 (#59637)
45a9b104ac4 is described below

commit 45a9b104ac4ae5fba05332e58837c9575af7eda9
Author: github-actions[bot] 
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Thu Jan 8 09:38:59 2026 +0800

    branch-4.0: [improve](syntax) compatiable with mysql MOD syntax #58432 
(#59637)
    
    Cherry-picked from #58432
    
    Co-authored-by: ivin <[email protected]>
---
 .../src/main/antlr4/org/apache/doris/nereids/DorisLexer.g4     |  1 +
 .../src/main/antlr4/org/apache/doris/nereids/DorisParser.g4    |  3 ++-
 .../org/apache/doris/nereids/parser/LogicalPlanBuilder.java    |  2 ++
 .../data/nereids_p0/operator/test_arithmetic_operators.out     | 10 ++++++++++
 .../nereids_p0/operator/test_arithmetic_operators.groovy       |  3 +++
 5 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisLexer.g4 
b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisLexer.g4
index a8daa3eb894..e1cb6076a4a 100644
--- a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisLexer.g4
+++ b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisLexer.g4
@@ -614,6 +614,7 @@ SUBTRACT: '-';
 ASTERISK: '*';
 SLASH: '/';
 MOD: '%';
+MOD_ALT: 'MOD';
 TILDE: '~';
 AMPERSAND: '&';
 LOGICALAND: '&&';
diff --git a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisParser.g4 
b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisParser.g4
index 11be1ad4505..293599c648a 100644
--- a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisParser.g4
+++ b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisParser.g4
@@ -1612,7 +1612,7 @@ valueExpression
     | operator=(SUBTRACT | PLUS | TILDE) valueExpression                       
              #arithmeticUnary
     // split arithmeticBinary from 1 to 5 due to they have different operator 
precedence
     | left=valueExpression operator=HAT right=valueExpression                  
              #arithmeticBinary
-    | left=valueExpression operator=(ASTERISK | SLASH | MOD | DIV) 
right=valueExpression     #arithmeticBinary
+    | left=valueExpression operator=(ASTERISK | SLASH | MOD | MOD_ALT | DIV) 
right=valueExpression     #arithmeticBinary
     | left=valueExpression operator=(PLUS | SUBTRACT) right=valueExpression    
              #arithmeticBinary
     | left=valueExpression operator=AMPERSAND right=valueExpression            
              #arithmeticBinary
     | left=valueExpression operator=PIPE right=valueExpression                 
              #arithmeticBinary
@@ -2117,6 +2117,7 @@ nonReserved
     | MIN
     | MINUTE
     | MINUTES
+    | MOD_ALT
     | MODIFY
     | MONTH
     | MTMV
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java
index f769c0aace8..2425f832617 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java
@@ -2999,6 +2999,8 @@ public class LogicalPlanBuilder extends 
DorisParserBaseVisitor<Object> {
                         return new Divide(left, right);
                     case DorisParser.MOD:
                         return new Mod(left, right);
+                    case DorisParser.MOD_ALT:
+                        return new Mod(left, right);
                     case DorisParser.PLUS:
                         return new Add(left, right);
                     case DorisParser.SUBTRACT:
diff --git 
a/regression-test/data/nereids_p0/operator/test_arithmetic_operators.out 
b/regression-test/data/nereids_p0/operator/test_arithmetic_operators.out
index 218d2376ddd..8e841fe2e54 100644
--- a/regression-test/data/nereids_p0/operator/test_arithmetic_operators.out
+++ b/regression-test/data/nereids_p0/operator/test_arithmetic_operators.out
@@ -290,3 +290,13 @@
 \N     \N      \N
 \N     \N      \N
 
+-- !arith_op30 --
+0.123  0.1     0.3330001831054688
+1.500  0.2680000000000007      0.25
+0.325  1       0
+
+-- !arith_op31 --
+0.123  0.1     0.3330001831054688
+1.500  0.2680000000000007      0.25
+0.325  1       0
+
diff --git 
a/regression-test/suites/nereids_p0/operator/test_arithmetic_operators.groovy 
b/regression-test/suites/nereids_p0/operator/test_arithmetic_operators.groovy
index 1cec22cbe4c..3fbd15bd3bb 100644
--- 
a/regression-test/suites/nereids_p0/operator/test_arithmetic_operators.groovy
+++ 
b/regression-test/suites/nereids_p0/operator/test_arithmetic_operators.groovy
@@ -76,4 +76,7 @@ suite("test_arithmetic_operators", "query,p0") {
     qt_arith_op27 "select -10.2 / 0.0, -10.2 / 0, -10.2 % 0.0, -10.2 % 0"
     qt_arith_op28 "select k5 / 0, k8 / 0, k9 / 0 from ${tableName} order by 
k1,k2,k3,k4"
     qt_arith_op29 "select k5 % 0, k8 % 0, k9 % 0 from ${tableName} order by 
k1,k2,k3,k4"
+
+    qt_arith_op30 "select k5 MOD 3, k8 mod 2, k9 Mod 1 from ${tableName} order 
by k1,k2,k3,k4"
+    qt_arith_op31 "select k5 MOD 3, MOD(k8, 2), (k9 MOD 1) as MOD from 
${tableName} order by k1,k2,k3,k4"
 }


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

Reply via email to