[
https://issues.apache.org/jira/browse/CALCITE-4702?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17387769#comment-17387769
]
Julian Hyde commented on CALCITE-4702:
--------------------------------------
{quote}The GROUP BY constant essentially means GROUP BY nothing{quote}
If by "GROUP BY nothing" you mean "GROUP BY ()", then I don't agree. In the SQL
standard, "GROUP BY constant" does not mean the same as "GROUP BY ()". When the
input is empty, the former should return 0 rows, and the latter should return 1
row.
To be clear: Calcite should implement the standard behavior, regardless of
which JDBC back-end it is running against.
I agree with the observations in the blog post that it is difficult to generate
queries on various databases that implement standard "GROUP BY constant" and
"GROUP BY ()" behaviors.
> Error when executing query with GROUP BY constant via JDBC adapter
> ------------------------------------------------------------------
>
> Key: CALCITE-4702
> URL: https://issues.apache.org/jira/browse/CALCITE-4702
> Project: Calcite
> Issue Type: Bug
> Components: core, jdbc-adapter
> Affects Versions: 1.27.0
> Reporter: Stamatis Zampetakis
> Assignee: Stamatis Zampetakis
> Priority: Major
>
> The following functionally equivalent SQL queries are accepted by Calcite and
> produce a valid plan
> {noformat}
> select avg(salary) from employee group by true
> select avg(salary) from employee group by 'a'
> {noformat}
> but they may fail if they are executed via the JDBC adapter since not all
> DBMS allow grouping by constants expressions. Moreover, what works for one
> may not work for the other.
> +Examples+
> The {{GROUP BY TRUE}} query works in Postgres, and MySQL but fails in
> Redshift with the following exception:
> {noformat}
> com.amazon.redshift.util.RedshiftException: ERROR: non-integer constant in
> GROUP BY
> {noformat}
> The {{GROUP BY 'a'}} query works in MySQL but fails in Postgres with the
> following exception:
> {noformat}
> ERROR: non-integer constant in GROUP BY
> {noformat}
> The {{GROUP BY}} constant essentially means {{GROUP BY}} nothing and there is
> a nice [blog
> post|https://blog.jooq.org/2018/05/25/how-to-group-by-nothing-in-sql/]
> listing some limitations of various DBMS.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)