aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2014-04-24 13:29:48 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2014-04-24 13:30:00 -0400
commitea9ac774198ad097d2d322f81c39bd8cdfa8b04d (patch)
treef6fa3c6441080ab03a4073015c5dc7caaa7b084b
parentf9cd2b7824f627069f81cbb47d767af039d66a0d (diff)
downloadpostgresql-ea9ac774198ad097d2d322f81c39bd8cdfa8b04d.tar.gz
postgresql-ea9ac774198ad097d2d322f81c39bd8cdfa8b04d.zip
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.
-rw-r--r--src/backend/access/transam/xact.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c
index 2b103f42559..463a4984047 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);