From ea9ac774198ad097d2d322f81c39bd8cdfa8b04d Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Thu, 24 Apr 2014 13:29:48 -0400 Subject: [PATCH] Reset pg_stat_activity.xact_start during PREPARE TRANSACTION. Once we've completed a PREPARE, our session is not running a transaction, so its entry in pg_stat_activity should show xact_start as null, rather than leaving the value as the start time of the now-prepared transaction. I think possibly this oversight was triggered by faulty extrapolation from the adjacent comment that says PrepareTransaction should not call AtEOXact_PgStat, so tweak the wording of that comment. Noted by Andres Freund while considering bug #10123 from Maxim Boguk, although this error doesn't seem to explain that report. Back-patch to all active branches. --- src/backend/access/transam/xact.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c index 2b103f4255..463a498404 100644 --- a/src/backend/access/transam/xact.c +++ b/src/backend/access/transam/xact.c @@ -2247,8 +2247,9 @@ PrepareTransaction(void) AtEOXact_Files(); AtEOXact_ComboCid(); AtEOXact_HashTables(true); - /* don't call AtEOXact_PgStat here */ + /* don't call AtEOXact_PgStat here; we fixed pgstat state above */ AtEOXact_Snapshot(true); + pgstat_report_xact_timestamp(0); CurrentResourceOwner = NULL; ResourceOwnerDelete(TopTransactionResourceOwner); -- 2.40.0