From: | Richard Guo <guofenglinux(at)gmail(dot)com> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | Pg Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>, "Finnerty, Jim" <jfinnert(at)amazon(dot)com> |
Subject: | Re: Making Vars outer-join aware |
Date: | 2022-08-29 06:30:23 |
Message-ID: | CAMbWs4-mvPPCJ1W6iK6dD5HiNwoJdi6mZp=-7mE8N9Sh+cd0tQ@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Fri, Aug 19, 2022 at 2:45 AM Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
> Here's a rebase up to HEAD, mainly to get the cfbot back in sync
> as to what's the live patch.
Noticed another different behavior from previous. When we try to reduce
JOIN_LEFT to JOIN_ANTI, we want to know if the join's own quals are
strict for any Var that was forced null by higher qual levels. We do
that by checking whether local_nonnullable_vars and forced_null_vars
overlap. However, the same Var from local_nonnullable_vars and
forced_null_vars may be labeled with different varnullingrels. If that
is the case, currently we would fail to tell they actually overlap. As
an example, consider 'b.i' in the query below
# explain (costs off) select * from a left join b on a.i = b.i where b.i is
null;
QUERY PLAN
---------------------------
Hash Left Join
Hash Cond: (a.i = b.i)
Filter: (b.i IS NULL)
-> Seq Scan on a
-> Hash
-> Seq Scan on b
(6 rows)
Thanks
Richard
From | Date | Subject | |
---|---|---|---|
Next Message | Peter Smith | 2022-08-29 06:31:07 | Re: Handle infinite recursion in logical replication setup |
Previous Message | Peter Smith | 2022-08-29 06:29:27 | Re: Handle infinite recursion in logical replication setup |