You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by jh...@apache.org on 2022/09/09 06:04:21 UTC
[calcite] 02/04: [CALCITE-5270] JDBC adapter should not generate 'FILTER (WHERE)' in Firebolt dialect
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 <tj...@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() {