postgres.git / summary / log / commit / refs

commit    d19bd29f07aef9e508ff047d128a4046cc8bc1e2
Author:   Tom Lane <tgl@sss.pgh.pa.us>
Date:     Thu Apr 24 17:29:48 2014 +0000
First released in: 9.4.0, 8.4.22, 9.0.18, 9.1.14, 9.2.9, 9.3.5

    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 b20d9732e78..9ee11f34f2c 100644 --- a/src/backend/access/transam/xact.c +++ b/src/backend/access/transam/xact.c @@ -2280,8 +2280,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); [parent: b2c9b161b8ae]