]> granicus.if.org Git - postgresql/commit
Wrap multixact/members correctly during extension
authorAlvaro Herrera <alvherre@alvh.no-ip.org>
Thu, 2 Jan 2014 21:17:07 +0000 (18:17 -0300)
committerAlvaro Herrera <alvherre@alvh.no-ip.org>
Thu, 2 Jan 2014 21:17:07 +0000 (18:17 -0300)
commit03db7945961c449ddd42be883e226bb889270161
tree0c7743abdfa7fe9ebf220d0c0c48fc65b3e6a6ad
parentf40e79173a9941831dfd28137ac6425e0539f82d
Wrap multixact/members correctly during extension

In the 9.2 code for extending multixact/members, the logic was very
simple because the number of entries in a members page was a proper
divisor of 2^32, and thus at 2^32 wraparound the logic for page switch
was identical than at any other page boundary.  In commit 0ac5ad5134f I
failed to realize this and introduced code that was not able to go over
the 2^32 boundary.  Fix that by ensuring that when we reach the last
page of the last segment we correctly zero the initial page of the
initial segment, using correct uint32-wraparound-safe arithmetic.

Noticed while investigating bug #8673 reported by Serge Negodyuck, as
diagnosed by Andres Freund.
src/backend/access/transam/multixact.c