I have been staring at a particular Quidem test from agg.iq:
https://github.com/apache/calcite/blame/b412fa4ac0b1340a9f4e50c1d7ae4c869dcd1d2f/core/src/test/resources/sql/agg.iq#L1304

select sum(sal) as s,
grouping_id(job, deptno, comm is null) as g,
group_id() as i
from "scott".emp
group by grouping sets ((job, deptno, comm is null),
(job, deptno), (job, comm is null), (job, comm is null))
order by g, i, s desc;

Our runtime produces a different result than the result in the quidem test.
Postgres seems to agree with our runtime (I had to slightly modify the query, 
since Postgres does not have group_id(), but it does agree on the reduced set 
of columns).

The results differ in the G column only, where the following 5 lines have a 2 
in Postgres, but a 0 in Calcite (whenever group_id() is 1 the results differ in 
the G colum):

+---------+---+---+
| S       | G | I |
+---------+---+---+
...
| 8275.00 | 0 | 1 |
| 6000.00 | 0 | 1 |
| 5600.00 | 0 | 1 |
| 5000.00 | 0 | 1 |
| 4150.00 | 0 | 1 |

This test has been added 3 years ago, as part of 
https://issues.apache.org/jira/browse/CALCITE-4748 by 
https://github.com/apache/calcite/commits?author=NobiGo

I am wondering how the test results from Quidem are generally validated.

Since I am not sure this is a bug in Calcite I haven't filed a Jira case.

Can someone else validate the output of this query on some other database that 
supports grouping and grouping sets?

Thank you!
Mihai

Reply via email to