[ https://issues.apache.org/jira/browse/CALCITE-4021?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17114999#comment-17114999 ]
Julian Hyde commented on CALCITE-4021: -------------------------------------- {{EnumerableUnion}} COULD preserve ordering but SHOULD it? In order to preserve ordering {{EnumerableUnion}} would have to merge. That would imply evaluating the inputs in parallel and/or buffering, which might be less desirable in some circumstances than what {{EnumerableUnion}} does today - namely a 'cat' operation - read input 1 to completion, then read input 2 to completion. I think we would not want to get rid of what we have today. So, to achieve what you want we would implement {{EnumerableMergeUnion}}, which exactly what CALCITE-3221 proposes. > EnumerableUnion should preserve ordering when all inputs have the same > collation > -------------------------------------------------------------------------------- > > Key: CALCITE-4021 > URL: https://issues.apache.org/jira/browse/CALCITE-4021 > Project: Calcite > Issue Type: Improvement > Reporter: Rui Wang > Assignee: Rui Wang > Priority: Major > > For query: > {code:sql} > select name from sales_dept > union > select name from it_dept > order by mgr > {code} > We could generate a plan based on > https://issues.apache.org/jira/browse/CALCITE-4017: > {code:java} > EnumerableUnion > EnumerableProject > EnumerableSort > EnumerableTableScan[name="sales_dept"] > EnumerableProject > EnumerableSort > EnumerableTableScan[name="it_dept"] > {code} > So EnumerableUnion should preserve ordering when all input have the same > collation to make sure result of query is correct. -- This message was sent by Atlassian Jira (v8.3.4#803005)