Re: BUG #17975: Nested Loop Index Scan returning wrong result

From: Andres Freund <andres(at)anarazel(dot)de>
To: Peter Geoghegan <pg(at)bowt(dot)ie>
Cc: tel(at)jklm(dot)no, pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: BUG #17975: Nested Loop Index Scan returning wrong result
Date: 2023-06-14 21:21:27
Message-ID: 20230614212127.l2dpbowfjmttqpkv@awork3.anarazel.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

Hi,

On 2023-06-14 14:10:02 -0700, Peter Geoghegan wrote:
> On Wed, Jun 14, 2023 at 1:37 PM Andres Freund <andres(at)anarazel(dot)de> wrote:
> > Something seems to be off with the relevant param - it's NULL. Haven't dug
> > deeper.
>
> I see that the bad plan has _bt_first() return false early during a
> btgettuple() call for one of the a_pkey index scans. That is,
> _bt_first() returns false early in the "Quit now if
> _bt_preprocess_keys() discovered that the scan keys can never be
> satisfied (eg, x == 1 AND x > 2)" path.

I think that's a consequence of the planner bug (see subsequent email) - the
bad plan wrongly uses an index that first returns a null a_id, which then
quite legitimately makes _bt_preprocess_keys() exit early. That bit of
smartness did confuse me for a moment, I was expecting the index scan to
actually scan the index at first :).

I haven't figured out where we're dropping the implied index qual on the floor
yet...

Greetings,

Andres Freund

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Andres Freund 2023-06-14 21:37:24 Re: BUG #17973: Reinit of pgstats entry for dropped DB can break autovacuum daemon
Previous Message Andres Freund 2023-06-14 21:12:31 Re: BUG #17975: Nested Loop Index Scan returning wrong result