Re: [BUG] Skipped initialization of some xl_xact_parsed_prepare fields
Fujii Masao <masao.fujii@oss.nttdata.com>
From: Fujii Masao <masao.fujii@oss.nttdata.com>
To: Daniil Davydov <3danissimo@gmail.com>,
PostgreSQL Hackers <pgsql-hackers@postgresql.org>
Date: 2025-05-15T11:30:14Z
Lists: pgsql-hackers
On 2025/05/15 14:39, Daniil Davydov wrote: > Hi, > I noticed that inside ParsePrepareRecord function we are missing > initialization of `nstats` and `nabortstats` fields of > xl_xact_parsed_prepare structure: > *** (current code in master) > memset(parsed, 0, sizeof(*parsed)); > > parsed->xact_time = xlrec->prepared_at; > parsed->origin_lsn = xlrec->origin_lsn; > parsed->origin_timestamp = xlrec->origin_timestamp; > parsed->twophase_xid = xlrec->xid; > parsed->dbId = xlrec->database; > parsed->nsubxacts = xlrec->nsubxacts; > parsed->nrels = xlrec->ncommitrels; > parsed->nabortrels = xlrec->nabortrels; > parsed->nmsgs = xlrec->ninvalmsgs; > *** > > Thus, they will always be 0 after calling the ParsePrepareRecord > function, but `stats` and `abortstats` pointers are set correctly: > *** (current code in master) > parsed->stats = (xl_xact_stats_item *) bufptr; > bufptr += MAXALIGN(xlrec->ncommitstats * sizeof(xl_xact_stats_item)); > > parsed->abortstats = (xl_xact_stats_item *) bufptr; > bufptr += MAXALIGN(xlrec->nabortstats * sizeof(xl_xact_stats_item)); > *** > > If we look (for example) on parsing of a commit record, we could see > that both `nstats` and `stats` fields are set inside the > ParseCommitRecord function. > For now, zeroed number of stats lead to invalid output of > `xact_desc_prepare`, because it relies on values of `nstats` and > `nabortstats` fields: > *** (current code in master) > xact_desc_stats(buf, "commit ", parsed.nstats, parsed.stats); > xact_desc_stats(buf, "abort ", parsed.nabortstats, parsed.abortstats); > *** Thanks for the report! You're right. > I suppose to add initialization of `nstats` and `nabortstats` to > ParsePrepareRecord (see attached patch). LGTM. Barring any objection, I will commit this patch. Regards, -- Fujii Masao Advanced Computing Technology Center Research and Development Headquarters NTT DATA CORPORATION
Commits
-
Fix incorrect WAL description for PREPARE TRANSACTION record.
- 0e0174b4973a 15.14 landed
- 0d2063585876 16.10 landed
- 11efaaffac87 17.6 landed
- 0bd762e81f6c 18.0 landed