Re: BUG #18146: Rows reappearing in Tables after Auto-Vacuum Failure in PostgreSQL on Windows

Thomas Munro <thomas.munro@gmail.com>

From: Thomas Munro <thomas.munro@gmail.com>
To: Michael Paquier <michael@paquier.xyz>
Cc: Robert Haas <robertmhaas@gmail.com>, Heikki Linnakangas <hlinnaka@iki.fi>, Alexander Lakhin <exclusion@gmail.com>, Tom Lane <tgl@sss.pgh.pa.us>, Laurenz Albe <laurenz.albe@cybertec.at>, rootcause000@gmail.com, pgsql-bugs@lists.postgresql.org
Date: 2024-12-20T23:15:56Z
Lists: pgsql-bugs

Attachments

On Sat, Dec 21, 2024 at 11:18 AM Thomas Munro <thomas.munro@gmail.com> wrote:
> On Fri, Dec 20, 2024 at 3:53 PM Michael Paquier <michael@paquier.xyz> wrote:
> > Hmm.  Indeed.  As a HEAD change, keeping only a smgrtruncate() is
> > tempting as it creates a parallel with md.c.  I am not completely sure
> > how to make all that leaner with the smgrnblocks() calls that save the
> > old number of blocks for each fork.  But perhaps Thomas has a fancy
> > idea if it comes down to that, and it could always be done later.
>
> I did that, but also back-patched it like that.  I realise now that
> that was an ABI mistake, and I plan to change it back to the v5
> arrangement (smgrtruncate() unchanged, smgrtruncatefrom() with the new
> argument) in the back-branches only, just in case someone is using raw
> smgrtruncate() in compiled code in the wild.  Will post a patch soon.

Here.  Better/tidier ideas welcome.

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Fix C error reported by Oracle compiler.

  2. Restore smgrtruncate() prototype in back-branches.

  3. Fix corruption when relation truncation fails.

  4. RelationTruncate() must set DELAY_CHKPT_START.

  5. WAL-log inplace update before revealing it to other sessions.

  6. Fix bugs in MultiXact truncation

  7. Fix possible recovery trouble if TRUNCATE overlaps a checkpoint.