From: Álvaro Herrera Date: Tue, 4 Nov 2025 19:31:43 +0000 (+0100) Subject: Fix snapshot handling bug in recent BRIN fix X-Git-Tag: REL_18_1~26 X-Git-Url: http://git.postgresql.org/gitweb/static/main.js?a=commitdiff_plain;h=8733f0b54c05239e059e473c46c1800dcd37cd40;p=postgresql.git Fix snapshot handling bug in recent BRIN fix Commit a95e3d84c0e0 added ActiveSnapshot push+pop when processing work-items (BRIN autosummarization), but forgot to handle the case of a transaction failing during the run, which drops the snapshot untimely. Fix by making the pop conditional on an element being actually there. Author: Álvaro Herrera Backpatch-through: 13 Discussion: https://postgr.es/m/202511041648.nofajnuddmwk@alvherre.pgsql --- diff --git a/src/backend/postmaster/autovacuum.c b/src/backend/postmaster/autovacuum.c index 80d71eb1039..66620fb4755 100644 --- a/src/backend/postmaster/autovacuum.c +++ b/src/backend/postmaster/autovacuum.c @@ -2544,7 +2544,8 @@ deleted: PushActiveSnapshot(GetTransactionSnapshot()); perform_work_item(workitem); - PopActiveSnapshot(); + if (ActiveSnapshotSet()) /* transaction could have aborted */ + PopActiveSnapshot(); /* * Check for config changes before acquiring lock for further jobs.