From: Tom Lane Date: Thu, 24 Apr 2014 17:29:48 +0000 (-0400) Subject: Reset pg_stat_activity.xact_start during PREPARE TRANSACTION. X-Git-Tag: REL8_4_22~43 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=82fbd88a7b0d7f31be524a9ca3f195f06940349a;p=thirdparty%2Fpostgresql.git 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. --- diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c index 89d30f94ec4..84917169320 100644 --- a/src/backend/access/transam/xact.c +++ b/src/backend/access/transam/xact.c @@ -1963,8 +1963,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);