Xurenhe created CALCITE-5328:
--------------------------------

             Summary: The rule of AGGREGATE_EXPAND_DISTINCT_AGGREGATES_TO_JOIN 
throws error when meeting the rollup's query
                 Key: CALCITE-5328
                 URL: https://issues.apache.org/jira/browse/CALCITE-5328
             Project: Calcite
          Issue Type: Bug
            Reporter: Xurenhe
            Assignee: Xurenhe


The rule of AGGREGATE_EXPAND_DISTINCT_AGGREGATES_TO_JOIN aims to transform 
aggregate with distince agg-call to join, such as:

 
{code:java}
// origin sql
SELECT deptno,
       job,
       count(DISTINCT ename),
       sum(DISTINCT sal)
FROM sales.emp
GROUP BY deptno,
         job;

// transformed sql
SELECT t1.deptno,
       t2.job,
       c1,
       c2
  (SELECT deptno, job, count(ename) AS c1
   FROM
     (SELECT deptno, job, ename
      GROUP BY deptno, job, ename)
   GROUP BY deptno, job) t1
INNER JOIN
  (SELECT deptno,
          job,
          sum(sal) AS c2
   FROM
     (SELECT deptno,
             job,
             sal
      GROUP BY deptno,
               job,
               sal)
   GROUP BY deptno,
            job) t2 
ON t1.deptno IS NOT DISTINCT FROM t2.deptno AND t1.job IS NOT DISTINCTFROM 
t2.job;{code}
 

 

But, this rule throws ex, when meeting aggregate with rollup.
 * *TestCase*

 
{code:java}
// org.apache.calcite.test.RelOptRulesTest#test
@Test void test() {
    final String sql = "select deptno, job, count(distinct ename), sum(distinct 
sal)\n"
        + "from sales.emp group by rollup(deptno,job)";
    sql(sql)
        .withRule(CoreRules.AGGREGATE_EXPAND_DISTINCT_AGGREGATES_TO_JOIN)
        .check();
} {code}
 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to