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)