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

mbudiu pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/calcite.git


The following commit(s) were added to refs/heads/main by this push:
     new 041619f6ea [CALCITE-6726] Add translation for MOD operator in MSSQL
041619f6ea is described below

commit 041619f6ea3b2c190ae45cd435c6442f5c54cf40
Author: Sreeharsha Ramanavarapu <[email protected]>
AuthorDate: Wed Dec 11 08:07:50 2024 -0500

    [CALCITE-6726] Add translation for MOD operator in MSSQL
    
    MOD is not supported in MSSQL. Translate it to %.
---
 .../java/org/apache/calcite/sql/dialect/MssqlSqlDialect.java  |  7 ++++++-
 .../org/apache/calcite/rel/rel2sql/RelToSqlConverterTest.java | 11 +++++++++++
 2 files changed, 17 insertions(+), 1 deletion(-)

diff --git 
a/core/src/main/java/org/apache/calcite/sql/dialect/MssqlSqlDialect.java 
b/core/src/main/java/org/apache/calcite/sql/dialect/MssqlSqlDialect.java
index 02163c170d..126d9f1e16 100644
--- a/core/src/main/java/org/apache/calcite/sql/dialect/MssqlSqlDialect.java
+++ b/core/src/main/java/org/apache/calcite/sql/dialect/MssqlSqlDialect.java
@@ -33,6 +33,8 @@ import org.apache.calcite.sql.SqlKind;
 import org.apache.calcite.sql.SqlLiteral;
 import org.apache.calcite.sql.SqlNode;
 import org.apache.calcite.sql.SqlNodeList;
+import org.apache.calcite.sql.SqlOperator;
+import org.apache.calcite.sql.SqlSyntax;
 import org.apache.calcite.sql.SqlUtil;
 import org.apache.calcite.sql.SqlWriter;
 import org.apache.calcite.sql.fun.SqlStdOperatorTable;
@@ -177,7 +179,10 @@ public class MssqlSqlDialect extends SqlDialect {
         }
         unparseFloor(writer, call);
         break;
-
+      case MOD:
+        SqlOperator op = SqlStdOperatorTable.PERCENT_REMAINDER;
+        SqlSyntax.BINARY.unparse(writer, op, call, leftPrec, rightPrec);
+        break;
       default:
         super.unparseCall(writer, call, leftPrec, rightPrec);
       }
diff --git 
a/core/src/test/java/org/apache/calcite/rel/rel2sql/RelToSqlConverterTest.java 
b/core/src/test/java/org/apache/calcite/rel/rel2sql/RelToSqlConverterTest.java
index 7e82ccf841..9065ac7c46 100644
--- 
a/core/src/test/java/org/apache/calcite/rel/rel2sql/RelToSqlConverterTest.java
+++ 
b/core/src/test/java/org/apache/calcite/rel/rel2sql/RelToSqlConverterTest.java
@@ -8940,6 +8940,17 @@ class RelToSqlConverterTest {
         .dialect(MssqlSqlDialect.DEFAULT).ok(mssqlExpected);
   }
 
+ /** Test case for
+   * <a 
href="https://issues.apache.org/jira/browse/CALCITE-6726";>[CALCITE-6726]
+   * Add translation for MOD operator in MSSQL</a>.
+   */
+  @Test public void testModFunctionEmulationForMSSQL() {
+    final String query = "select mod(11,3)";
+    final String mssqlExpected = "SELECT 11 % 3\nFROM (VALUES (0)) AS [t] 
([ZERO])";
+    sql(query).dialect(MssqlSqlDialect.DEFAULT).ok(mssqlExpected);
+  }
+
+
   /** Test case for
    * <a 
href="https://issues.apache.org/jira/browse/CALCITE-6655";>[CALCITE-6655]
    * Aggregation of deeply nested window not detected when unparsing</a>.

Reply via email to