pgsql: Fix use of wrong variable in _hash_kill_items() - Mailing list pgsql-committers

From Andres Freund
Subject pgsql: Fix use of wrong variable in _hash_kill_items()
Date
Msg-id E1w2ZZI-000CpO-3D@gemulon.postgresql.org
Whole thread Raw
List 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@tigerdata.com>
Reported-by: Alexander Lakhin <exclusion@gmail.com>
Reported-by: Heikki Linnakangas <hlinnaka@iki.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(-)


pgsql-committers by date:

Previous
From: Robert Haas
Date:
Subject: pgsql: pg_plan_advice: Avoid a crash under GEQO.
Next
From: Andrew Dunstan
Date:
Subject: pgsql: Allow IS JSON predicate to work with domain types