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)

Reply via email to