[ 
https://issues.apache.org/jira/browse/CALCITE-4723?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17397380#comment-17397380
 ] 

duan xiong commented on CALCITE-4723:
-------------------------------------

MySQL doesn't support GROUP BY ().

> Check whether JDBC adapter generates "GROUP BY ()" against Oracle, DB2, MSSQL
> -----------------------------------------------------------------------------
>
>                 Key: CALCITE-4723
>                 URL: https://issues.apache.org/jira/browse/CALCITE-4723
>             Project: Calcite
>          Issue Type: Bug
>            Reporter: Julian Hyde
>            Assignee: duan xiong
>            Priority: Major
>
> Oracle, DB2 and MSSQL have non-standard semantics for "GROUP BY ()". Standard 
> behavior is to always return one "grand total" row, but [Oracle, DB2 and 
> MSSQL return no rows if the input is 
> empty|https://blog.jooq.org/2018/05/25/how-to-group-by-nothing-in-sql/].
> Calcite's semantics is that "GROUP BY ()" always returns one row, and the 
> JDBC adapter currently assumes that all back ends have the same semantics. On 
> back ends that have different semantics, some queries might be giving 
> incorrect results.
> I suggest the following remedy:
>  * Add a {{SqlDialect}} method {{boolean omitGrandTotalOnEmptyInput()}}
>  * Run the test suite, and see whether we ever generate "GROUP BY ()" on one 
> of the affected dialects. Try to write a test case where we do this.
>  * Modify the dialects to generate safe SQL in these cases (possibly "GROUP 
> BY ()", or possibly something else). As the above article notes, it is 
> particularly difficult to find SQL that works for MSSQL, because it bumps 
> into the no-constants rule (see CALCITE-4702)



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to