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]