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

Michael Paquier <michael@paquier.xyz>

From: Michael Paquier <michael@paquier.xyz>
To: Thomas Munro <thomas.munro@gmail.com>
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: 2025-01-08T03:22:41Z
Lists: pgsql-bugs
On Wed, Jan 08, 2025 at 08:50:33AM +0900, Michael Paquier wrote:
> Sounds good to me.  Thanks for the commit!

Actually not that good, and wrasse is reporting a failure:
https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=wrasse&dt=2025-01-07%2022%3A26%3A00
"/export/home/nm/farm/studio64v12_6/REL_15_STABLE/pgsql.build/../pgsql/src/backend/storage/smgr/smgr.c",
line 634: void function cannot return value

It seems to me that you meant to do the following in the back
branches:
--- a/src/backend/storage/smgr/smgr.c
+++ b/src/backend/storage/smgr/smgr.c
@@ -706,7 +706,7 @@ smgrtruncate(SMgrRelation reln, ForkNumber *forknum, int nforks,
 	for (int i = 0; i < nforks; ++i)
 		old_nblocks[i] = smgrnblocks(reln, forknum[i]);
 
-	return smgrtruncate2(reln, forknum, nforks, old_nblocks, nblocks);
+	smgrtruncate2(reln, forknum, nforks, old_nblocks, nblocks);
 }
--
Michael

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.