From bcfbd3f747d7f4403d8b53d1c471557c391d613f Mon Sep 17 00:00:00 2001 From: =?utf8?q?=C3=81lvaro=20Herrera?= Date: Tue, 4 Nov 2025 20:31:43 +0100 Subject: [PATCH] Fix snapshot handling bug in recent BRIN fix MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 --- src/backend/postmaster/autovacuum.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/backend/postmaster/autovacuum.c b/src/backend/postmaster/autovacuum.c index 107cd82e2e1..4577259722b 100644 --- a/src/backend/postmaster/autovacuum.c +++ b/src/backend/postmaster/autovacuum.c @@ -2617,7 +2617,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. -- 2.47.3