Julian Hyde created CALCITE-6834:
------------------------------------
Summary: In query that applies COALESCE to nullable SUM,
EnumerableProjectToCalcRule throws AssertionError
Key: CALCITE-6834
URL: https://issues.apache.org/jira/browse/CALCITE-6834
Project: Calcite
Issue Type: Bug
Reporter: Julian Hyde
In a query that applies COALESCE to nullable SUM, EnumerableProjectToCalcRule
throws AssertionError. Query:
{code}
{code}
Stack trace:
{code}
java.lang.AssertionError: Cannot add expression of different type to set:
set type is RecordType(INTEGER NOT NULL $f0) NOT NULL
expression type is RecordType(SMALLINT NOT NULL $f0) NOT NULL
set is
rel#5531:EnumerableProject.ENUMERABLE.[](input=HepRelVertex#5530,inputs=0)
expression is EnumerableCalc(expr#0=[{inputs}], $f0=[$t0])
EnumerableAggregate(group=[{}], agg#0=[$SUM0($3)])
EnumerableTableScan(table=[[scott, EMP]])
Type mismatch:
rowtype of original rel: RecordType(INTEGER NOT NULL $f0) NOT NULL
rowtype of new rel: RecordType(SMALLINT NOT NULL $f0) NOT NULL
Difference:
$f0: INTEGER NOT NULL -> SMALLINT NOT NULL
at
org.apache.calcite.plan.RelOptUtil.verifyTypeEquivalence(RelOptUtil.java:433)
at
org.apache.calcite.plan.hep.HepRuleCall.transformTo(HepRuleCall.java:58)
at
org.apache.calcite.plan.RelOptRuleCall.transformTo(RelOptRuleCall.java:273)
at
org.apache.calcite.plan.RelOptRuleCall.transformTo(RelOptRuleCall.java:288)
at
org.apache.calcite.adapter.enumerable.EnumerableProjectToCalcRule.onMatch(EnumerableProjectToCalcRule.java:54)
at
org.apache.calcite.plan.AbstractRelOptPlanner.fireRule(AbstractRelOptPlanner.java:350)
at org.apache.calcite.plan.hep.HepPlanner.applyRule(HepPlanner.java:556)
{code}
Here is a patch to reproduce:
{noformat}
diff --git a/core/src/test/resources/sql/agg.iq
b/core/src/test/resources/sql/agg.iq
index 7322b84da..26b2a4b5c 100644
--- a/core/src/test/resources/sql/agg.iq
+++ b/core/src/test/resources/sql/agg.iq
@@ -723,6 +723,17 @@ group by deptno;
!use scott
+select coalesce(sum(mgr), 0) as m
+from emp;
++--------+
+| M |
++--------+
+| 100611 |
++--------+
+(1 row)
+
+!ok
+
# GROUPING in SELECT clause of CUBE query
{noformat}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)