[ 
https://issues.apache.org/jira/browse/CALCITE-7608?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18090442#comment-18090442
 ] 

Mihai Budiu commented on CALCITE-7608:
--------------------------------------

I suspect that Logical is the right layer - this operator should normally be 
synthesized by SqlToRelConverter directly.

It looks to me that the interaction is mostly reflected in rewrite rules. It's 
certainly much simpler than the quadratic blow up you get from introducing a 
new type, where you need to really support all possible casts and implicit 
casts...

 

> Introduce a SelectMany operator
> -------------------------------
>
>                 Key: CALCITE-7608
>                 URL: https://issues.apache.org/jira/browse/CALCITE-7608
>             Project: Calcite
>          Issue Type: Improvement
>          Components: core
>    Affects Versions: 1.42.0
>            Reporter: Mihai Budiu
>            Assignee: Mihai Budiu
>            Priority: Minor
>              Labels: pull-request-available
>
> Today UNNEST is implemented using the Uncollect operator. We propose adding 
> an alternative LogicalSelectMany operator, which generalizes Uncollect. 
> (Notice that Enumerable API already has a SelectMany.) The main difference 
> between Uncollect and SelectMany is that Uncollect unnests all the fields of 
> its input relation, whereas LogicalSelectMany would only unnest SOME of the 
> fields of the input collection, preserving the other ones in each output row.
> This distinction is very important, because:
>  * LogicalSelectMany can be directly and efficiently implemented using the 
> Enumerable SelectMany
>  * UNNEST used in a cross-join is implemented using an Uncollect and a 
> LogicalCorrelate. However, the same UNNEST can be represented using just one 
> LogicalSelectMany node
>  * Neither the old nor the new decorrelator can actually eliminate 
> LogicalCorrelate nodes that are paired with Uncollect. Using 
> LogicalSelectMany we can decorrelate many more plans.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to