Re: [SP-]GiST IOS visibility bug (was: Why doens't GiST require super-exclusive lock)

From: Matthias van de Meent <boekewurm+postgres(at)gmail(dot)com>
To: Mihail Nikalayeu <mihailnikalayeu(at)gmail(dot)com>
Cc: solai v <solai(dot)cdac(at)gmail(dot)com>, Heikki Linnakangas <hlinnaka(at)iki(dot)fi>, Peter Geoghegan <pg(at)bowt(dot)ie>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>, Álvaro Herrera <alvherre(at)kurilemu(dot)de>
Subject: Re: [SP-]GiST IOS visibility bug (was: Why doens't GiST require super-exclusive lock)
Date: 2026-08-03 13:40:17
Message-ID: CAEze2Wi1FhPC0zkR1pz+Bzzpy2b45PoJPET+RkJcXE8tT7dvkg@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Wed, 29 Jul 2026 at 19:02, Mihail Nikalayeu
<mihailnikalayeu(at)gmail(dot)com> wrote:
>
> Hello!
>
> I am working on a stress-test framework and was trying to use it to
> reproduce this bug.
> It reproduced, but SP-GiST failed after the fix was applied.

> I haven't validated it carefully, sorry, but I think it will be helpful.

Yeah, that was me using the TID in the downlink-equivalent tuple,
rather than that of the leaf tuple, for the visibility check, and that
obviously will cause correctness issues.

Attached v3, which fixes that, and hopefully also fixes the
fallthrough compiler warning that cfbot has been reporting. Thanks for
the report!

Kind regards,

Matthias van de Meent
Databricks (https://www.databricks.com)

Attachment Content-Type Size
v3-0001-Expose-visibility-checking-shim-for-index-usage.patch application/x-patch 12.9 KB
v3-0003-SP-GIST-Fix-visibility-issues-in-IOS.patch application/x-patch 10.4 KB
v3-0002-GIST-Fix-visibility-issues-in-IOS.patch application/x-patch 6.5 KB
v3-0004-Test-for-IOS-Vacuum-race-conditions-in-index-AMs.patch application/x-patch 11.5 KB

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Fujii Masao 2026-08-03 13:42:22 Re: Checkpoint replication slots later
Previous Message Hannu Krosing 2026-08-03 13:36:36 Re: WAL compression setting after PostgreSQL LZ4 default change