Re: Hash Semi Join 5,000-50,000x slower on PG18 vs PG17 with 10+ equality columns and NULL values (identical plan, no spill)

From: David Rowley <dgrowleyml(at)gmail(dot)com>
To: Tomas Vondra <tomas(at)vondra(dot)me>
Cc: Dan Stefura <dstefura(at)bluecatnetworks(dot)com>, "pgsql-bugs(at)lists(dot)postgresql(dot)org" <pgsql-bugs(at)lists(dot)postgresql(dot)org>
Subject: Re: Hash Semi Join 5,000-50,000x slower on PG18 vs PG17 with 10+ equality columns and NULL values (identical plan, no spill)
Date: 2026-07-31 11:29:55
Message-ID: CAApHDvrO3BHMcVFdzyBXA1w35rWCDsHBZa6w4K_o+kz-um_uVQ@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

On Fri, 31 Jul 2026 at 17:24, David Rowley <dgrowleyml(at)gmail(dot)com> wrote:
> Here's a WIP patch. I'm still looking at the JIT version to see if
> that needs to be adjusted.

The JIT version did suffer from the same issue. I've pushed a fix and
backpatched to v18.

I didn't add any new test since it's a performance issue. It might be
possible to do something by checking the EXPLAIN ANALYZE hash table
size, but the size of that is going to depend on the machine the test
is running on. It just seems a bit too elaborate to do something like
extracting the EXPLAIN ANALYZE hash memory usage and ensuring it's not
above some value, so I didn't.

Thanks for doing the bisecting work here.

David

In response to

Browse pgsql-bugs by date

  From Date Subject
Next Message David Rowley 2026-07-31 11:33:50 Re: Hash Semi Join 5,000-50,000x slower on PG18 vs PG17 with 10+ equality columns and NULL values (identical plan, no spill)
Previous Message Andrey Rachitskiy 2026-07-31 11:03:00 Re: BUG #19590: to_date/to_timestamp "Y,YYY" accepts out-of-range values