pgsql: Fix use of wrong variable in _hash_kill_items()

From: Andres Freund <andres(at)anarazel(dot)de>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Fix use of wrong variable in _hash_kill_items()
Date: 2026-03-17 18:55:05
Message-ID: E1w2ZZI-000CpO-3D@gemulon.postgresql.org
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Fix use of wrong variable in _hash_kill_items()

In 82467f627bd I somehow ended up using 'so->currPos.buf' instead of the 'buf'
variable, which is incorrect when the buffer is not already pinned. At the
very least this can lead to assertion failures

Unfortunately this shows that this code path was not covered. Expand
src/test/modules/index/specs/killtuples.spec to test it. Until now the
'result' step always reported either a 0 or 1 buffer accesses, but when
exercising hash overflows, more buffers are accessed. To avoid depending on
the precise number of accesses, change the result step to return whether there
were any heap accesses. That makes the change a lot more verbose, but still
seems worth it.

Reported-by: Alexander Kuzmenkov <akuzmenkov(at)tigerdata(dot)com>
Reported-by: Alexander Lakhin <exclusion(at)gmail(dot)com>
Reported-by: Heikki Linnakangas <hlinnaka(at)iki(dot)fi>
Discussion: https://postgr.es/m/vjtmvwvbxt7w5uyacxpzibpj65ewcb7uqaqbhd4arvnjbp5jqz%405ksdh6fsyqve
Discussion: https://postgr.es/m/b9de8d05-3b02-4a27-9b0b-03972fa4bfd3@iki.fi

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/f5eb854ab6d6281ec2d3143657944bdda6676341

Modified Files
--------------
src/backend/access/hash/hashutil.c | 4 +-
src/test/modules/index/expected/killtuples.out | 219 +++++++++++++++++--------
src/test/modules/index/specs/killtuples.spec | 15 +-
3 files changed, 163 insertions(+), 75 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Andrew Dunstan 2026-03-17 19:22:33 pgsql: Allow IS JSON predicate to work with domain types
Previous Message Robert Haas 2026-03-17 18:46:57 pgsql: pg_plan_advice: Avoid a crash under GEQO.