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)