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.

Reply via email to