Corvin Kuebler created CALCITE-6557:
---------------------------------------
Summary: Type Assertion Error In LogicalAggregate
Key: CALCITE-6557
URL: https://issues.apache.org/jira/browse/CALCITE-6557
Project: Calcite
Issue Type: Bug
Affects Versions: 1.37.0
Reporter: Corvin Kuebler
Hey all!
The following Test in JdbcAdapterTests:
{code:java}
@Test
void testSumOfSumWithGroupBy() {
CalciteAssert.model(JdbcTest.SCOTT_MODEL)
.query("SELECT\n" +
" SUM(DEPTNO)\n" +
"FROM\n" +
" (\n" +
" SELECT\n" +
" SUM(DEPTNO) AS DEPTNO\n" +
" FROM\n" +
" \"SCOTT\".\"DEPT\"\n" +
" GROUP BY\n" +
" DNAME\n" +
" )")
.enable(CalciteAssert.DB == CalciteAssert.DatabaseInstance.HSQLDB)
.runs();
}
{code}
fails with:
{code:java}
java.lang.AssertionError: type mismatch:
aggCall type:
TINYINT NOT NULL
inferred type:
TINYINT
at org.apache.calcite.util.Litmus.lambda$static$0(Litmus.java:31)
at org.apache.calcite.plan.RelOptUtil.eq(RelOptUtil.java:2204)
at
org.apache.calcite.rel.core.Aggregate.typeMatchesInferred(Aggregate.java:450)
at org.apache.calcite.rel.core.Aggregate.<init>(Aggregate.java:177)
{code}
Its possible to workaround this issue by adding a COALESCE block
(see
{code:java}
@Test
void testSumOfSumWithGroupBy() {
CalciteAssert.model(JdbcTest.SCOTT_MODEL)
.query("SELECT\n" +
" SUM(DEPTNO)\n" +
"FROM\n" +
" (\n" +
" SELECT\n" +
" COALESCE(SUM(DEPTNO),0) AS DEPTNO\n" +
" FROM\n" +
" \"SCOTT\".\"DEPT\"\n" +
" GROUP BY\n" +
" DNAME\n" +
" )")
.enable(CalciteAssert.DB == CalciteAssert.DatabaseInstance.HSQLDB)
.runs();
}
{code}
)
however I think the statement should also work without the workaround.
Since "TINYINT NOT NULL" is a subset of "TINYINT" the equality check could be
made more tolerant?
BR,
Corvin
--
This message was sent by Atlassian Jira
(v8.20.10#820010)