You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@calcite.apache.org by "Vladimir Ozerov (Jira)" <ji...@apache.org> on 2021/05/21 09:24:00 UTC
[jira] [Created] (CALCITE-4615) AggregateUnionTransposeRule may
assign wrong aggregate function to input
Vladimir Ozerov created CALCITE-4615:
----------------------------------------
Summary: AggregateUnionTransposeRule may assign wrong aggregate function to input
Key: CALCITE-4615
URL: https://issues.apache.org/jira/browse/CALCITE-4615
Project: Calcite
Issue Type: Bug
Components: core
Affects Versions: 1.26.0
Reporter: Vladimir Ozerov
Consider the following query tree:
{code}
1: Aggregate[SUM($0):BIGINT]
2: Union[$0:BIGINT]
3: Input[$0:BIGINT]
4: Input[$0:BIGINT NOT NULL]
{code}
The Union's row type is {{BIGINT}}, and Aggergate's row type is {{BIGINT}} as well.
When the {{AggregateUnionTransposeRule}} rule pushes {{Aggregate}} below {{Union}}, it installs the aggregate call from the original {{Aggregate}} to new aggregates:
{code}
1: Aggregate[SUM($0):BIGINT]
2: Union[$0:BIGINT]
3: Aggregate[SUM($0):BIGINT]
4: Input[$0:BIGINT]
5: Aggregate[SUM($0):BIGINT]
6: Input[$0:BIGINT NOT NULL]
{code}
This leads to a Litmus failure in the {{Aggregate}} on line 5 because the aggregate call returns {{BIGINT}}, while it should return {{BIGINT NOT NULL}}.
The solution is to re-create aggregate calls for inputs and let Calcite deduce the return type.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)