Subject: Re: Short-circuit sort_inner_and_outer if there are no mergejoin clauses

From: Richard Guo <[email-masked]>
Date: Thu, 25 Apr 2024 15:20:10 +0800

On Wed, Apr 24, 2024 at 5:13 PM Richard Guo <[email-masked]> wrote:

> In sort_inner_and_outer, we create mergejoin join paths by explicitly
> sorting both relations on each possible ordering of the available
> mergejoin clauses.  However, if there are no available mergejoin
> clauses, we can skip this process entirely.  It seems that this is a
> relatively common scenario.  Checking the regression tests I noticed
> that there are a lot of cases where we would arrive here with an empty
> mergeclause_list.
>

FWIW, during the run of the core regression tests, I found that we enter
sort_inner_and_outer with an empty mergeclause_list a total of 11064
times.  Out of these occurrences, there are 293 instances where the join
type is JOIN_UNIQUE_OUTER, indicating the need to create a UniquePath
for the outer path.  Similarly, there are also 293 instances where the
join type is JOIN_UNIQUE_INNER, indicating the need to create a
UniquePath for the inner path.

Thanks
Richard