You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@asterixdb.apache.org by Taewoo Kim <wa...@gmail.com> on 2016/03/08 07:42:37 UTC
Left-Outer-Unnest-Map operator VS Unnest-Map operator
Hello All,
I just want to share one information. We now have Left-Outer-Unnest-Map
(LOUM) operator. The difference between LOUM and Unnest-Map (UM) operator
is that LOUM is used to represent left-outer semantics of the
left-outer-join. That is, LOUM basically propagates all input variables
(from the outer branch). It also generates null values for non-match tuples
in the inner branch. Unlike this, UM does not propagate input variables by
default.
So, when a left-outer-join is transformed as an index-nested-loop-join,
LOUM operator will be placed in the inner branch by
IntroduceJoinAccessMethodRule and propagates all input variables from the
outer branch. For each tuples from the outer branch, it conducts
index-search and generates null values if there is no result from that
index-search.
So, during a logical plan optimization, if you see the LOUM operator, that
means that left outer join is transformed into an index-nested-loop join.
Re: Left-Outer-Unnest-Map operator VS Unnest-Map operator
Posted by abdullah alamoudi <ba...@gmail.com>.
Thanks Taewoo for sharing this.
It would be nice if everyone who introduces something new, let others know
about it.
Regards,
Abdullah.
On Tue, Mar 8, 2016 at 9:42 AM, Taewoo Kim <wa...@gmail.com> wrote:
> Hello All,
>
> I just want to share one information. We now have Left-Outer-Unnest-Map
> (LOUM) operator. The difference between LOUM and Unnest-Map (UM) operator
> is that LOUM is used to represent left-outer semantics of the
> left-outer-join. That is, LOUM basically propagates all input variables
> (from the outer branch). It also generates null values for non-match tuples
> in the inner branch. Unlike this, UM does not propagate input variables by
> default.
>
> So, when a left-outer-join is transformed as an index-nested-loop-join,
> LOUM operator will be placed in the inner branch by
> IntroduceJoinAccessMethodRule and propagates all input variables from the
> outer branch. For each tuples from the outer branch, it conducts
> index-search and generates null values if there is no result from that
> index-search.
>
> So, during a logical plan optimization, if you see the LOUM operator, that
> means that left outer join is transformed into an index-nested-loop join.
>