Re: Fix gistkillitems & add regression test to microvacuum

Heikki Linnakangas <hlinnaka@iki.fi>

From: Heikki Linnakangas <hlinnaka@iki.fi>
To: Kirill Reshke <reshkekirill@gmail.com>, Soumya S Murali <soumyamurali.work@gmail.com>
Cc: Andrey Borodin <x4mmm@yandex-team.ru>, pgsql-hackers <pgsql-hackers@postgresql.org>, Andres Freund <andres@anarazel.de>
Date: 2026-07-07T18:22:15Z
Lists: pgsql-hackers
On 18/03/2026 07:42, Kirill Reshke wrote:
> On Wed, 11 Feb 2026 at 17:18, Soumya S Murali
> <soumyamurali.work@gmail.com> wrote:
>> Thank you for the updated patch.
>> I reproduced the issue locally by filling a GiST root page, deleting
>> all tuples, and triggering a microvacuum by an index-only scan.
>> With the patch, The root page is now handled consistently with other
>> leaf pages. so->curBlkno and so->curPageLSN are properly set during
>> scan, and gistkillitems() operates safely and correctly on the root
>> page.
>> Based on runtime validation and code inspection, the fix LGTM.
> 
> Rebased due to  f5eb854ab6d[0]
> 
> I have added a [0]committer to CC.
> 
> Andres, can you please take a look at this thread, if by chance you
> have spare time for it? You have changed kill tuples-related logic
> frequently, so you might be interested...

Looks good to me. It's natural to set curBlkNo in gistScanPage(), 
because that's where curPageLSN is set too.

Committed, but I refrained from backpatching this for now, since it's a 
pretty harmless bug. We could do that later if needed.

Thanks!

- Heikki




Commits

  1. Fix use of wrong variable in _hash_kill_items()