David Cai created CARBONDATA-3752: ------------------------------------- Summary: Query on carbon table should support reusing Exchange Key: CARBONDATA-3752 URL: https://issues.apache.org/jira/browse/CARBONDATA-3752 Project: CarbonData Issue Type: Improvement Reporter: David Cai
Query on carbon table should support reusing Exchange [Reproduce] create table t1(c1 int, c2 string) using carbondata insert into t1 values(1, 'abc') explain select c2, sum(c1) from t1 group by c2 union all select c2, sum(c1) from t1 group by c2 [Physical Plan] {noformat} Union :- *(2) HashAggregate(keys=[c2#37], functions=[sum(cast(c1#36 as bigint))]) : +- Exchange hashpartitioning(c2#37, 200) : +- *(1) HashAggregate(keys=[c2#37], functions=[partial_sum(cast(c1#36 as bigint))]) : +- *(1) FileScan carbondata default.t1[c1#36,c2#37] ReadSchema: struct<c1:int,c2:string> +- *(4) HashAggregate(keys=[c2#37], functions=[sum(cast(c1#36 as bigint))]) +- Exchange hashpartitioning(c2#37, 200) +- *(3) HashAggregate(keys=[c2#37], functions=[partial_sum(cast(c1#36 as bigint))]) +- *(3) FileScan carbondata default.t1[c1#36,c2#37] ReadSchema: struct<c1:int,c2:string>{noformat} It should reuse Exchange like Following: {noformat} Union :- *(2) HashAggregate(keys=[c2#37], functions=[sum(cast(c1#36 as bigint))]) : +- Exchange hashpartitioning(c2#37, 200) : +- *(1) HashAggregate(keys=[c2#37], functions=[partial_sum(cast(c1#36 as bigint))]) : +- *(1) FileScan carbondata default.t1[c1#36,c2#37] ReadSchema: struct<c1:int,c2:string> +- *(4) HashAggregate(keys=[c2#37], functions=[sum(cast(c1#36 as bigint))]) +- ReusedExchange [c2#37, sum#54L], Exchange hashpartitioning(c2#37, 200){noformat} -- This message was sent by Atlassian Jira (v8.3.4#803005)