You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@calcite.apache.org by "Julian Hyde (Jira)" <ji...@apache.org> on 2021/05/17 23:22:00 UTC

[jira] [Created] (CALCITE-4609) WITH query using AVG throws AssertionError: type mismatch

Julian Hyde created CALCITE-4609:
------------------------------------

             Summary: WITH query using AVG throws AssertionError: type mismatch
                 Key: CALCITE-4609
                 URL: https://issues.apache.org/jira/browse/CALCITE-4609
             Project: Calcite
          Issue Type: Bug
            Reporter: Julian Hyde


The query
{code:sql}
WITH EmpAnalytics AS (
  SELECT deptno, job, AVG(sal) AS avg_sal
  FROM Emp
  GROUP BY deptno, job)
SELECT job, avg(avg_sal) AS avg_sal2
FROM EmpAnalytics
WHERE deptno = 30
GROUP BY job{code}
gives error
{noformat}
java.lang.AssertionError: type mismatch:
ref:
DECIMAL(19, 2)
input:
DECIMAL(7, 2)
	at org.apache.calcite.util.Litmus$1.fail(Litmus.java:32)
	at org.apache.calcite.plan.RelOptUtil.eq(RelOptUtil.java:2209)
	at org.apache.calcite.rex.RexChecker.visitInputRef(RexChecker.java:129)
	at org.apache.calcite.rex.RexChecker.visitInputRef(RexChecker.java:61)
	at org.apache.calcite.rex.RexInputRef.accept(RexInputRef.java:114)
	at org.apache.calcite.rel.core.Project.isValid(Project.java:219)
	at org.apache.calcite.rel.core.Project.<init>(Project.java:98)
	at org.apache.calcite.rel.logical.LogicalProject.<init>(LogicalProject.java:69)
	at org.apache.calcite.rel.logical.LogicalProject.create(LogicalProject.java:126)
	at org.apache.calcite.rel.logical.LogicalProject.create(LogicalProject.java:114)
	at org.apache.calcite.rel.core.RelFactories$ProjectFactoryImpl.createProject(RelFactories.java:178)
	at org.apache.calcite.tools.RelBuilder.project_(RelBuilder.java:1645)
	at org.apache.calcite.tools.RelBuilder.project(RelBuilder.java:1417)
	at org.apache.calcite.tools.RelBuilder.project(RelBuilder.java:1389)
	at org.apache.calcite.tools.RelBuilder.project(RelBuilder.java:1378)
	at org.apache.calcite.rel.rules.AggregateRemoveRule.onMatch(AggregateRemoveRule.java:120)
{noformat}
Here is a patch that reproduces:
{noformat}
diff --git a/core/src/test/resources/sql/misc.iq b/core/src/test/resources/sql/misc.iq
index ba5ce1053..d036da3d2 100644
--- a/core/src/test/resources/sql/misc.iq
+++ b/core/src/test/resources/sql/misc.iq
@@ -1065,6 +1065,16 @@ Expression 'DEPTNO' is not being grouped
 
 !use scott
 
+WITH EmpAnalytics as (
+  SELECT deptno, job, AVG(sal) AS avg_sal
+  FROM "scott".emp
+  GROUP BY deptno, job)
+SELECT job, AVG(avg_sal) AS avg_sal2
+FROM EmpAnalytics
+WHERE deptno = 30
+GROUP BY job;
+!ok
+
 # ORDER BY expression with SELECT DISTINCT
 select distinct deptno, job
 from "scott".emp
{noformat}
If you run the same query from SQLLine, you get a different error, but I think they are probably related:
{noformat}
Error while applying rule ProjectMergeRule, args [rel#406:LogicalProject.NONE.[](input=RelSubset#301,exprs=[$1, $2, CASE(IS NOT NULL($2), 1:BIGINT, 0:BIGINT)]), rel#362:LogicalProject.NONE.[](input=RelSubset#361,exprs=[$1, $0, $2])] (state=,code=0)
{noformat}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)