Xurenhe created CALCITE-5296:
--------------------------------
Summary: CASE statement within grouping-sets's item throws
exception during sql_to_rel
Key: CALCITE-5296
URL: https://issues.apache.org/jira/browse/CALCITE-5296
Project: Calcite
Issue Type: Bug
Components: core
Reporter: Xurenhe
Assignee: Xurenhe
CALCITE throws exception during the stage of sql_to_rel, when executing *CASE*
statement after the statement of {*}ROLLUP{*}, and grouping's item exists in
the *CASE* statement.
Test
case:(org.apache.calcite.test.SqlToRelConverterTest#testCaseWhenGroupingSet)
{code:java}
// JAVA: org.apache.calcite.test.SqlToRelConverterTest#testCaseWhenGroupingSet
@Test void testCaseWhenGroupingSet() {
final String sql = "select deptno, case when grouping(deptno) = 0 then deptno
else 1 end\n"
+ "from emp\n"
+ "group by rollup(deptno, job)";
sql(sql).ok();
}
// XML: org/apache/calcite/test/SqlToRelConverterTest.xml:456
<TestCase name="testCaseWhenGroupingSet">
<Resource name="sql">
<![CDATA[SELECT deptno, CASE WHEN grouping(deptno) = 0 THEN deptno ELSE 1
END
FROM emp
GROUP BY ROLLUP(deptno, job)]]>
</Resource>
<Resource name="plan">
<![CDATA[
LogicalProject(DEPTNO=[$0], EXPR$1=[CASE(=($2, 0), $0, 1)])
LogicalAggregate(group=[{0, 1}], groups=[[{0, 1}, {0}, {}]],
agg#0=[GROUPING($0)])
LogicalProject(DEPTNO=[$7], JOB=[$2])
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
</TestCase>{code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)