On 2025-Dec-04, Heikki Linnakangas wrote:
> While working on the 64-bit multixid offsets patch, I noticed one more bug
> with this. At offset wraparound, when we set the next multixid's offset in
> RecordNewMultiXact, we incorrectly set it to 0 instead of 1. We're supposed
> to skip over offset 1, because 0 is reserved to mean invalid. We do that
> correctly when setting the "current" multixid's offset, because the caller
> of RecordNewMultiXact has already skipped over offset 0, but I missed it for
> the next offset.
Ouch.
> I tried to modify the new wraparound TAP test to reproduce that, but it
> turned out to be difficult because you need to have multiple backends
> assigning multixids concurrently to hit that.
Hmm, would it make sense to add a pgbench-based test on
src/test/modules/xid_wraparound? That module is already known to be
expensive, and it doesn't run unless explicitly enabled, so I think it's
not a bad fit.
--
Álvaro Herrera 48°01'N 7°57'E — https://www.EnterpriseDB.com/