postgres.git / summary / log / commit / refs

commit    11efaaffac87e7ba4aedbbb612d2eddc37fabfc4
Author:   Fujii Masao <fujii@postgresql.org>
Date:     Wed May 21 02:55:14 2025 +0000
First released in: 18.0, 15.14, 16.10, 17.6

    Fix incorrect WAL description for PREPARE TRANSACTION record.
    
    Since commit 8b1dccd37c7, the PREPARE TRANSACTION WAL record includes
    information about dropped statistics entries. However, the WAL resource
    manager description function for PREPARE TRANSACTION record failed to
    parse this information correctly and always assumed there were
    no such entries.
    
    As a result, for example, pg_waldump could not display the dropped
    statistics entries stored in PREPARE TRANSACTION records.
    
    The root cause was that ParsePrepareRecord() did not set the number of
    statistics entries to drop on commit or abort. These values remained
    zero-initialized and were never updated from the parsed record.
    
    This commit fixes the issue by properly setting those values during parsing.
    With this fix, pg_waldump can now correctly report dropped statistics
    entries in PREPARE TRANSACTION records.
    
    Back-patch to v15, where commit 8b1dccd37c7 was introduced.
    
    Author: Daniil Davydov <3danissimo@gmail.com>
    Reviewed-by: Fujii Masao <masao.fujii@gmail.com>
    Discussion: https://postgr.es/m/CAJDiXgh-6Epb2XiJe4uL0zF-cf0_s_7Lw1TfEHDMLzYjEmfGOw@mail.gmail.com
    Backpatch-through: 15


src/backend/access/rmgrdesc/xactdesc.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/backend/access/rmgrdesc/xactdesc.c b/src/backend/access/rmgrdesc/xactdesc.c index dccca201e05..2836112282e 100644 --- a/src/backend/access/rmgrdesc/xactdesc.c +++ b/src/backend/access/rmgrdesc/xactdesc.c @@ -252,6 +252,8 @@ ParsePrepareRecord(uint8 info, xl_xact_prepare *xlrec, xl_xact_parsed_prepare *p parsed->nsubxacts = xlrec->nsubxacts; parsed->nrels = xlrec->ncommitrels; parsed->nabortrels = xlrec->nabortrels; + parsed->nstats = xlrec->ncommitstats; + parsed->nabortstats = xlrec->nabortstats; parsed->nmsgs = xlrec->ninvalmsgs; strncpy(parsed->twophase_gid, bufptr, xlrec->gidlen); [parent: a4da7b0cfabd]