[
https://issues.apache.org/jira/browse/CALCITE-6516?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17871575#comment-17871575
]
Leonid Chistov commented on CALCITE-6516:
-----------------------------------------
[~mbudiu]
Yes, thanks, with latest main I am able to reproduce it with following test:
{code:java}
select avg(comm2), sum(comm2), count(comm2) from (select cast(comm * 70 as
decimal(7, 2)) as comm2 from "scott".emp);
+----------+-----------+--------+
| EXPR$0 | EXPR$1 | EXPR$2 |
+----------+-----------+--------+
| 38500.00 | 154000.00 | 4 |
+----------+-----------+--------+
(1 row)
!ok
EnumerableCalc(expr#0..1=[{inputs}], expr#2=[0], expr#3=[=($t1, $t2)],
expr#4=[null:DECIMAL(19, 2)], expr#5=[CASE($t3, $t4, $t0)],
expr#6=[CAST($t5):DECIMAL(7, 2)], expr#7=[/($t6, $t1)],
expr#8=[CAST($t7):DECIMAL(7, 2)], EXPR$0=[$t8], EXPR$1=[$t5], EXPR$2=[$t1])
EnumerableAggregate(group=[{}], agg#0=[$SUM0($0)], agg#1=[COUNT($0)])
EnumerableCalc(expr#0..7=[{inputs}], expr#8=[70], expr#9=[*($t6, $t8)],
expr#10=[CAST($t9):DECIMAL(7, 2)], COMM2=[$t10])
EnumerableTableScan(table=[[scott, EMP]])
!plan {code}
Execution result is:
{code:java}
java.lang.ArithmeticException: Value 154000.00 cannot be represented as a
DECIMAL(7, 2) {code}
[~suibianwanwan33]
Yes, I agree with your analysis. I am also not sure ATM if fix that you propose
can create other problems.
> AVG to SUM+COUNT transformation inserts invalid CAST call
> ---------------------------------------------------------
>
> Key: CALCITE-6516
> URL: https://issues.apache.org/jira/browse/CALCITE-6516
> Project: Calcite
> Issue Type: Bug
> Affects Versions: 1.37.0
> Reporter: Leonid Chistov
> Priority: Major
>
> As described in https://issues.apache.org/jira/browse/CALCITE-4911.
> In Calcite:
> {code:java}
> select avg(comm) as a from "scott".emp{code}
> This SQL physical plan is:
> {noformat}
> EnumerableCalc(expr#0..1=[{inputs}], expr#2=[0], expr#3=[=($t1, $t2)],
> expr#4=[null:DECIMAL(19, 2)], expr#5=[CASE($t3, $t4, $t0)],
> expr#6=[CAST($t5):DECIMAL(7, 2)], expr#7=[/($t6, $t1)],
> expr#8=[CAST($t7):DECIMAL(7, 2)], A=[$t8])
> EnumerableAggregate(group=[{}], agg#0=[$SUM0($6)], agg#1=[COUNT($6)])
> EnumerableTableScan(table=[[scott, EMP]]){noformat}
> Problem here is that cast of SUM result to DECIMAL(7, 2) is not correct and
> may cause overflow error at runtime or result in not expected data truncation.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)