[ https://issues.apache.org/jira/browse/CALCITE-3221?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17272786#comment-17272786 ]
Ruben Q L commented on CALCITE-3221: ------------------------------------ I agree with [~julianhyde]: [~vladimirsitnikov]'s suggestion is a valid proposal for a (separate) optimization of {{EnumerableDefaults#union}}. But this does not collide with the current ticket's purpose: a new MergeUnion operator that keeps the collation from its (sorted) inputs. BTW, I think the PR is in a good shape, if anybody else wants to take a final look, please go ahead. Otherwise I plan to merge it in the coming days. > Add a sort-merge union algorithm > -------------------------------- > > Key: CALCITE-3221 > URL: https://issues.apache.org/jira/browse/CALCITE-3221 > Project: Calcite > Issue Type: Improvement > Components: core > Affects Versions: 1.19.0 > Reporter: Stamatis Zampetakis > Assignee: Ruben Q L > Priority: Minor > Labels: pull-request-available > Attachments: screenshot-1.png > > Time Spent: 11h 20m > Remaining Estimate: 0h > > Currently, the union operation offered by Calcite is based on a {{HashSet}} > (see > [EnumerableDefaults.union|https://github.com/apache/calcite/blob/d98856bf1a5f5c151d004b769e14bdd368a67234/linq4j/src/main/java/org/apache/calcite/linq4j/EnumerableDefaults.java#L2747]) > and necessitates reading in memory all rows before returning a single > result. > Apart from increased memory consumption the operator is blocking and also > destroys the order of its inputs. > The goal of this issue is to add a new union algorithm (EnumerableMergeUnion > ?) exploiting the fact that the inputs are sorted which consumes less memory > and retains the order of its inputs. > Most likely the implementation of the merge join can be useful. -- This message was sent by Atlassian Jira (v8.3.4#803005)