Thread: Do we need to pass down nonnullable_vars when reducing outer joins?

Do we need to pass down nonnullable_vars when reducing outer joins?

From
Richard Guo
Date:
AFAICS, the Vars forced nonnullable by given clause are only used to
check if we can reduce JOIN_LEFT to JOIN_ANTI, and it is checking the
join's own quals there. It seems to me we do not need to pass down
nonnullable_vars by upper quals to the children of a join.

Attached is a patch to remove the pass-down of nonnullable_vars.

Thanks
Richard
Attachment

Re: Do we need to pass down nonnullable_vars when reducing outer joins?

From
Tom Lane
Date:
Richard Guo <guofenglinux@gmail.com> writes:
> AFAICS, the Vars forced nonnullable by given clause are only used to
> check if we can reduce JOIN_LEFT to JOIN_ANTI, and it is checking the
> join's own quals there. It seems to me we do not need to pass down
> nonnullable_vars by upper quals to the children of a join.

Hmm, you are right, we are not doing anything useful with that data.
I can't remember if I had a concrete plan for doing something with it
or not, but we sure aren't using it now.  So pushed.

            regards, tom lane



Re: Do we need to pass down nonnullable_vars when reducing outer joins?

From
Richard Guo
Date:

On Sun, Nov 6, 2022 at 4:00 AM Tom Lane <tgl@sss.pgh.pa.us> wrote:
Richard Guo <guofenglinux@gmail.com> writes:
> AFAICS, the Vars forced nonnullable by given clause are only used to
> check if we can reduce JOIN_LEFT to JOIN_ANTI, and it is checking the
> join's own quals there. It seems to me we do not need to pass down
> nonnullable_vars by upper quals to the children of a join.

Hmm, you are right, we are not doing anything useful with that data.
I can't remember if I had a concrete plan for doing something with it
or not, but we sure aren't using it now.  So pushed.
 
Thanks for pushing it!

Thanks
Richard