You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Feng Zhu (JIRA)" <ji...@apache.org> on 2019/05/18 03:16:02 UTC

[jira] [Created] (CALCITE-3077) Rewrite CUBE&ROLLUP&CUBE queries in SparkSqlDialect

Feng Zhu created CALCITE-3077:
---------------------------------

             Summary: Rewrite CUBE&ROLLUP&CUBE queries in SparkSqlDialect
                 Key: CALCITE-3077
                 URL: https://issues.apache.org/jira/browse/CALCITE-3077
             Project: Calcite
          Issue Type: Bug
          Components: core
    Affects Versions: 1.20.0
            Reporter: Feng Zhu


*Backgroung:* we are building a platform that adopts Calcite to process (i.e., parse&validate&convert&optimize) SQL queries and then regenerate the final SQL. For the purpose of handling large volume data, we use the popular SparkSQL engine to execute the generated SQL query.

However, we found a great part of real-world test cases failed, due to syntax differences of 
*_CUBE/ROLLUP/GROUPING SETS_* clauses.  Spark SQL dialect supports only "WITH ROLLUP&CUBE" in the "GROUP BY" clause. The corresponding grammer [1] is defined as below.

{code:java}
aggregation
    : GROUP BY groupingExpressions+=expression (',' groupingExpressions+=expression)* (
      WITH kind=ROLLUP
    | WITH kind=CUBE
    | kind=GROUPING SETS '(' groupingSet (',' groupingSet)* ')')?
    | GROUP BY kind=GROUPING SETS '(' groupingSet (',' groupingSet)* ')'
;
{code}

[1]https://github.com/apache/spark/blob/master/sql/catalyst/src/main/antlr4/org/apache/spark/sql/catalyst/parser/SqlBase.g4



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)