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 964fa03f8f91..5913761341d3 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 @@ -270,6 +270,10 @@ private static SqlNode createDatetimeCastSpec(String typeAlias, RelDataType type return false; } + @Override public boolean supportsGroupByLiteral() { + return false; + } + @Override public boolean supportsGroupByWithRollup() { return true; } 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 877a1e99ee62..57da65064a14 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 @@ -590,9 +590,13 @@ private static RelNode sqlToRel(String sql, SchemaPlus defaultSchema, + "(SELECT TRUE AS \"$f0\") AS \"t\"\nGROUP BY \"t\".\"$f0\""; String expectedInformix = "SELECT AVG(employee.salary)\nFROM foodmart.employee," + "\n(SELECT TRUE AS $f0) AS t\nGROUP BY t.$f0"; + String expectedMssql = "SELECT AVG([employee].[salary])\n" + + "FROM [foodmart].[employee],\n" + + "(VALUES (1)) AS [t] ([$f0])\nGROUP BY [t].[$f0]"; sql(query) .withRedshift().ok(expectedRedshift) - .withInformix().ok(expectedInformix); + .withInformix().ok(expectedInformix) + .withMssql().ok(expectedMssql); } /** Test case for @@ -669,9 +673,13 @@ private static RelNode sqlToRel(String sql, SchemaPlus defaultSchema, + "(SELECT DATE '2022-01-01' AS \"$f0\") AS \"t\"\nGROUP BY \"t\".\"$f0\""; String expectedInformix = "SELECT AVG(employee.salary)\nFROM foodmart.employee," + "\n(SELECT DATE '2022-01-01' AS $f0) AS t\nGROUP BY t.$f0"; + String expectedMssql = "SELECT AVG([employee].[salary])\n" + + "FROM [foodmart].[employee],\n" + + "(VALUES ('2022-01-01')) AS [t] ([$f0])\nGROUP BY [t].[$f0]"; sql(query) .withRedshift().ok(expectedRedshift) - .withInformix().ok(expectedInformix); + .withInformix().ok(expectedInformix) + .withMssql().ok(expectedMssql); } @Test void testSimpleSelectStarFromProductTable() {