]> git.ipfire.org Git - thirdparty/postgresql.git/commit
Don't Insert() a VFD entry until it's fully built.
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 17 Nov 2020 01:32:35 +0000 (20:32 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 17 Nov 2020 01:32:35 +0000 (20:32 -0500)
commit6b8235d035650d732b11c4e38f07c722496db0b9
tree931ce6084849baded0a7be341d25759c748e2267
parent84e31622882358f61e9d3c16c5b4f3187f504a68
Don't Insert() a VFD entry until it's fully built.

Otherwise, if FDDEBUG is enabled, the debugging output fails because
it tries to read the fileName, which isn't set up yet (and should in
fact always be NULL).

AFAICT, this has been wrong since Berkeley.  Before 96bf88d52,
it would accidentally fail to crash on platforms where snprintf()
is forgiving about being passed a NULL pointer for %s; but the
file name intended to be included in the debug output wouldn't
ever have shown up.

Report and fix by Greg Nancarrow.  Although this is only visibly
broken in custom-made builds, it still seems worth back-patching
to all supported branches, as the FDDEBUG code is pretty useless
as it stands.

Discussion: https://postgr.es/m/CAJcOf-cUDgm9qYtC_B6XrC6MktMPNRby2p61EtSGZKnfotMArw@mail.gmail.com
src/backend/storage/file/fd.c