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>.