From: Andrey Lepikhov <a.lepikhov@postgrespro.ru>
To: Hywel Carver <hywel@skillerwhale.com>
Cc: pgsql-hackers@lists.postgresql.org, Konstantin Knizhnik <knizhnik@garret.ru>
Subject: Re: Removing unneeded self joins
Date: Mon, 5 Jul 2021 16:20:01 +0300
Message-ID: <4b69ea09-5047-cd8a-a0d7-de1f12120433@postgrespro.ru> (raw)
In-Reply-To: <CAFcA2FauZ2jGka8utvFmRE1eLrKfmJmPnQjtf_cdewChFu0qcQ@mail.gmail.com>
References: <64486b0b-0404-e39e-322d-0801154901f3@postgrespro.ru>
<21e15759-dba5-2d2b-dd03-06943ad40378@postgrespro.ru>
<161553990603.28624.7702383984090736980.pgcf@coridan.postgresql.org>
<2a6e540a-4c9f-9402-2e02-71e35fcd4dd1@postgrespro.ru>
<CAFcA2FauZ2jGka8utvFmRE1eLrKfmJmPnQjtf_cdewChFu0qcQ@mail.gmail.com>
On 2/7/21 01:56, Hywel Carver wrote:
> On Wed, Jun 30, 2021 at 12:21 PM Andrey Lepikhov
> <a.lepikhov@postgrespro.ru <mailto:a.lepikhov@postgrespro.ru>> wrote:
> I think, here we could ask more general question: do we want to
> remove a
> 'IS NOT NULL' clause from the clause list if the rest of the list
> implicitly implies it?
>
>
> My suggestion was not to remove it, but to avoid adding it in the first
> place. When your optimisation has found a join on a group of columns
> under a uniqueness constraint, you would do something like this (forgive
> the pseudo-code)
>
> foreach(column, join_clause) {
> if(column.nullable) { // This condition is what I'm suggesting is added
> add_null_test(column, IS_NOT_NULL);
> }
> }
>
> But it may be that that's not possible or practical at this point in the
> code.
I think, such option will require to implement a new machinery to prove
that arbitrary column couldn't produce NULL value.
--
regards,
Andrey Lepikhov
Postgres Professional
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-hackers@postgresql.org
Cc: a.lepikhov@postgrespro.ru, hywel@skillerwhale.com, knizhnik@garret.ru
Subject: Re: Removing unneeded self joins
In-Reply-To: <4b69ea09-5047-cd8a-a0d7-de1f12120433@postgrespro.ru>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox