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 bbdf14d723 [CALCITE-6633] Add CEILING to MSSQL dialect
bbdf14d723 is described below
commit bbdf14d72392e2cbc61268b9ba8faa7b8778eb57
Author: Sreeharsha Ramanavarapu <[email protected]>
AuthorDate: Thu Oct 17 12:11:15 2024 -0400
[CALCITE-6633] Add CEILING to MSSQL dialect
Indentation and minor changes.
[CALCITE-6633] Add CEILING to MSSQL dialect
Add Jira link to test.
[CALCITE-6633] Add CEILING to MSSQL dialect
Add CEILING to MSSQL dialect
---
.../java/org/apache/calcite/sql/dialect/MssqlSqlDialect.java | 5 +++++
.../apache/calcite/rel/rel2sql/RelToSqlConverterTest.java | 12 ++++++++++++
2 files changed, 17 insertions(+)
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 6f32a33a4a..02163c170d 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
@@ -163,6 +163,11 @@ public class MssqlSqlDialect extends SqlDialect {
throw new IllegalArgumentException("MSSQL SUBSTRING requires FROM and
FOR arguments");
}
SqlUtil.unparseFunctionSyntax(MSSQL_SUBSTRING, writer, call, false);
+ } else if (call.getOperator().equals(SqlStdOperatorTable.CEIL)) {
+ // CEILING is supported but not CEIL in MS SQL
+ final SqlWriter.Frame frame = writer.startFunCall("CEILING");
+ call.operand(0).unparse(writer, leftPrec, rightPrec);
+ writer.endFunCall(frame);
} else {
switch (call.getKind()) {
case FLOOR:
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 67fd701f22..259af4b156 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
@@ -8696,6 +8696,18 @@ class RelToSqlConverterTest {
sql(query).withPostgresql().ok(expectedQuery);
}
+ /** Test case for
+ * <a
href="https://issues.apache.org/jira/browse/CALCITE-6633">[CALCITE-6633]
+ * MSSQL Dialect does not generate CEILING function</a>.
+ */
+ @Test void testMSSQLCeiling() {
+ final String query = "select 1.24, FLOOR(1.24), CEILING(1.24)";
+ final String mssqlExpected = "SELECT 1.24, FLOOR(1.24), CEILING(1.24)\n"
+ + "FROM (VALUES (0)) AS [t] ([ZERO])";
+ sql(query)
+ .dialect(MssqlSqlDialect.DEFAULT).ok(mssqlExpected);
+ }
+
/** Fluid interface to run tests. */
static class Sql {
private final CalciteAssert.SchemaSpec schemaSpec;