This is an automated email from the ASF dual-hosted git repository. jhyde pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/calcite.git
commit 1167b125747cd4b157f377ae0ba64f833890a138 Author: TJ Banghart <tjbangh...@google.com> AuthorDate: Wed Sep 7 00:13:39 2022 +0000 [CALCITE-5270] JDBC adapter should not generate 'FILTER (WHERE)' in Firebolt dialect Close apache/calcite#2896 --- .../calcite/sql/dialect/FireboltSqlDialect.java | 4 +++ .../calcite/rel/rel2sql/RelToSqlConverterTest.java | 34 +++++++++++++--------- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/core/src/main/java/org/apache/calcite/sql/dialect/FireboltSqlDialect.java b/core/src/main/java/org/apache/calcite/sql/dialect/FireboltSqlDialect.java index 71ca131875..25a4859fd8 100644 --- a/core/src/main/java/org/apache/calcite/sql/dialect/FireboltSqlDialect.java +++ b/core/src/main/java/org/apache/calcite/sql/dialect/FireboltSqlDialect.java @@ -158,6 +158,10 @@ public class FireboltSqlDialect extends SqlDialect { SqlParserPos.ZERO); } + @Override public boolean supportsAggregateFunctionFilter() { + return false; + } + @Override public boolean supportsFunction(SqlOperator operator, RelDataType type, final List<RelDataType> paramTypes) { switch (operator.kind) { 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 2ea4231930..a77987d52f 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 @@ -266,36 +266,42 @@ class RelToSqlConverterTest { sql(query).ok(expected); } - @Test void testAggregateFilterWhereToSqlFromProductTable() { + /** Test case for + * <a href="https://issues.apache.org/jira/browse/CALCITE-4321">[CALCITE-4321] + * JDBC adapter omits FILTER (WHERE ...) expressions when generating SQL</a> + * and + * <a href="https://issues.apache.org/jira/browse/CALCITE-5270">[CALCITE-5270] + * JDBC adapter should not generate FILTER (WHERE) in Firebolt dialect</a>. */ + @Test void testAggregateFilterWhere() { String query = "select\n" + " sum(\"shelf_width\") filter (where \"net_weight\" > 0),\n" + " sum(\"shelf_width\")\n" + "from \"foodmart\".\"product\"\n" + "where \"product_id\" > 0\n" + "group by \"product_id\""; - final String expected = "SELECT" + final String expectedDefault = "SELECT" + " SUM(\"shelf_width\") FILTER (WHERE \"net_weight\" > 0 IS TRUE)," + " SUM(\"shelf_width\")\n" + "FROM \"foodmart\".\"product\"\n" + "WHERE \"product_id\" > 0\n" + "GROUP BY \"product_id\""; - sql(query).ok(expected); - } - - @Test void testAggregateFilterWhereToBigQuerySqlFromProductTable() { - String query = "select\n" - + " sum(\"shelf_width\") filter (where \"net_weight\" > 0),\n" - + " sum(\"shelf_width\")\n" - + "from \"foodmart\".\"product\"\n" - + "where \"product_id\" > 0\n" - + "group by \"product_id\""; - final String expected = "SELECT SUM(CASE WHEN net_weight > 0 IS TRUE" + final String expectedBigQuery = "SELECT" + + " SUM(CASE WHEN net_weight > 0 IS TRUE" + " THEN shelf_width ELSE NULL END), " + "SUM(shelf_width)\n" + "FROM foodmart.product\n" + "WHERE product_id > 0\n" + "GROUP BY product_id"; - sql(query).withBigQuery().ok(expected); + final String expectedFirebolt = "SELECT" + + " SUM(CASE WHEN \"net_weight\" > 0 IS TRUE" + + " THEN \"shelf_width\" ELSE NULL END), " + + "SUM(\"shelf_width\")\n" + + "FROM \"foodmart\".\"product\"\n" + + "WHERE \"product_id\" > 0\n" + + "GROUP BY \"product_id\""; + sql(query).ok(expectedDefault) + .withBigQuery().ok(expectedBigQuery) + .withFirebolt().ok(expectedFirebolt); } @Test void testPivotToSqlFromProductTable() {