Fix data-corruption hazard in WAL-logged CREATE DATABASE.
authorTom Lane <tgl@sss.pgh.pa.us>
Sat, 6 Aug 2022 15:50:23 +0000 (11:50 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Sat, 6 Aug 2022 15:50:34 +0000 (11:50 -0400)
commit692df425b6883dd3edcc15bb984415ef349fafb1
tree7823db324c91c658f5e1e3486e3cc4cde4f835ba
parent922a8fa098404cbd5c6089e78eca4aebd828f847
Fix data-corruption hazard in WAL-logged CREATE DATABASE.

RelationCopyStorageUsingBuffer thought it could skip copying
empty pages, but of course that does not work at all, because
subsequent blocks will be out of place.

Also fix it to acquire share lock on the source buffer.  It *might*
be safe to not do that, but it's not very certain, and I don't think
this code deserves any benefit of the doubt.

Dilip Kumar, per complaint from me

Discussion: http://postgr.es/m/3679800.1659654066@sss.pgh.pa.us
src/backend/storage/buffer/bufmgr.c