You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@calcite.apache.org by "Pawel Ruchaj (JIRA)" <ji...@apache.org> on 2017/08/16 20:38:00 UTC
[jira] [Created] (CALCITE-1946) Query containing cascaded
aggregation gets converted to incorrect sql
Pawel Ruchaj created CALCITE-1946:
-------------------------------------
Summary: Query containing cascaded aggregation gets converted to incorrect sql
Key: CALCITE-1946
URL: https://issues.apache.org/jira/browse/CALCITE-1946
Project: Calcite
Issue Type: Bug
Components: core
Affects Versions: 1.13.0
Reporter: Pawel Ruchaj
Assignee: Julian Hyde
Below query, containing 2 SUM aggregation functions and sub-select, gets converted to a SQL that fails when executed in various SQL engines.
h4. SQL
{code:sql}
SELECT SUM("net_weight1") AS "net_weight_converted"
FROM (
SELECT SUM(" net_weight") AS "net_weight1"
FROM "foodmart"."product"
GROUP BY "product_id")
{code}
h4. Expected:
{code:sql}
SELECT SUM("net_weight1") AS "net_weight_converted"
FROM (SELECT
"product_id",
SUM("net_weight") AS "net_weight1"
FROM "foodmart"."product"
GROUP BY "product_id") AS "t0"
{code}
h4. Actual:
{code:sql}
SELECT SUM(SUM("net_weight")) AS "net_weight_converted"
FROM "foodmart"."product"
GROUP BY "product_id"
{code}
h4. Returned errors:
- MySQL 5.1.73
{code}Invalid use of group function{code}
- MemSQL 5.5.8:
{code}[HY000][1111] Invalid use of group function{code}
- HP Vertica: 7.2.1-0:
{code}[42803][2135] [Vertica][VJDBC](2135) ERROR: Aggregate function calls may not be nested java.lang.RuntimeException: com.vertica.support.exceptions.SyntaxErrorException: [Vertica][VJDBC](2135) ERROR: Aggregate function calls may not be nested{code}
h4. Test Case
{code:java}
@Test public void testSumSelectSum() {
final String sql = "select\n"
+ " SUM(\"net_weight1\") as \"net_weight_converted\"\n"
+ " from ("
+ " select\n"
+ " SUM(\"net_weight\") as \"net_weight1\"\n"
+ " from \"foodmart\".\"product\"\n"
+ " group by \"product_id\")";
final String expected = "SELECT SUM(\"net_weight1\") AS \"net_weight_converted\"\n" +
"FROM (SELECT \"product_id\", SUM(\"net_weight\") AS \"net_weight1\"\n" +
"FROM \"foodmart\".\"product\"\n" +
"GROUP BY \"product_id\") AS \"t0\"";
sql(sql).ok(expected);
}
{code}
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)