Fixing code that ignores failure of XLogRecGetBlockTag
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: pgsql-hackers@lists.postgresql.org
Date: 2022-04-11T18:20:21Z
Lists: pgsql-hackers
Attachments
- make-XLogRecGetBlockTag-throw-error.patch (text/x-diff) patch
Currently, XLogRecGetBlockTag has 41 callers, of which only four bother to check the function's result. The remainder take it on faith that they got valid data back, and many of them will misbehave in seriously nasty ways if they didn't. (This point was drawn to my attention by a Coverity complaint.) I think we should make this a little less fragile. Since we already have XLogRecGetBlockTagExtended, I propose that callers that need to handle the case of no-such-block must use that, while XLogRecGetBlockTag throws an error. The attached patch fixes that up, and also cleans up some random inconsistency about use of XLogRecHasBlockRef(). regards, tom lane
Commits
-
Make XLogRecGetBlockTag() throw error if there's no such block.
- bd037dc928dd 15.0 landed