]> git.ipfire.org Git - thirdparty/postgresql.git/commit
Fix rare dsa_allocate() failures due to freepage.c corruption.
authorThomas Munro <tmunro@postgresql.org>
Wed, 13 Feb 2019 00:14:10 +0000 (13:14 +1300)
committerThomas Munro <tmunro@postgresql.org>
Wed, 13 Feb 2019 00:25:27 +0000 (13:25 +1300)
commitb8386b0362b28bded0a7a00a90ac0c302b1e182a
tree6130d9a03f0f752f939048c28547239c28f2c4d0
parent364857f738982da58c0be33cf968d2bbbd496efd
Fix rare dsa_allocate() failures due to freepage.c corruption.

In a corner case, a btree page was allocated during a clean-up operation
that could cause the tracking of the largest contiguous span of free
space to get out of whack.  That was supposed to be prevented by the use
of the "soft" flag to avoid allocating internal pages during incidental
clean-up work, but the flag was ignored in the case where the FPM was
promoted from singleton format to btree format.  Repair.

Remove an obsolete comment in passing.

Back-patch to 10, where freepage.c arrived (as support for dsa.c).

Author: Robert Haas
Diagnosed-by: Thomas Munro and Robert Haas
Reported-by: Justin Pryzby, Rick Otten, Sand Stone, Arne Roland and others
Discussion: https://postgr.es/m/CAMAYy4%2Bw3NTBM5JLWFi8twhWK4%3Dk_5L4nV5%2BbYDSPu8r4b97Zg%40mail.gmail.com
src/backend/utils/mmgr/freepage.c