jingzhang created CALCITE-2249: ---------------------------------- Summary: AggregateJoinTransposeRule generates inequivalent nodes if Aggregate relNode contains distinct aggregate function. Key: CALCITE-2249 URL: https://issues.apache.org/jira/browse/CALCITE-2249 Project: Calcite Issue Type: Bug Components: core Reporter: jingzhang Assignee: Julian Hyde
AggregateJoinTransposeRule generates inequivalent nodes if Aggregate relNode contains distinct aggregate function. T1 ||a (String)||b (int)|| |A|1| |A|2| |B|2| |C|3| T2 ||c(int)|| |1| |1| |2| For the following sql, ${code} select count (distinct a) from t1, t2 where t1.b = t2.c ${code} Aggregate would generate following node tree, which is inequivalent with original node tree. ${code} LogicalAggregate(group=[{}], EXPR$0=[$SUM0($4)]) +- LogicalProject(b=[$0], EXPR$0=[$1], c=[$2], $f1=[$3], $f4=[*($1, $3)]) +- LogicalJoin(condition=[=($0, $2)], joinType=[inner]) :- LogicalAggregate(group=[\{1}], EXPR$0=[COUNT(DISTINCT $0)]) : +- LogicalTableScan(table=[[t1]]) +- LogicalAggregate(group=[\{0}], agg#0=[COUNT()]) +- LogicalTableScan(table=[[t2]]) ${code} Based on the converted plan, result is 4; while the correct answer is 2. -- This message was sent by Atlassian JIRA (v7.6.3#76005)