Thread: pgsql: Reduce scope of heap vacuum per_buffer_data
Reduce scope of heap vacuum per_buffer_data Move lazy_scan_heap()'s per_buffer_data variable into a tighter scope. In lazy_scan_heap()'s phase I heap vacuuming, the read stream API returns a pointer to the next block number to vacuum. As long as read_stream_next_buffer() returns a valid buffer, per_buffer_data should always be valid. Move per_buffer_data into a tighter scope and make sure it is reset to NULL on each iteration so that we get a core dump instead of bogus data from a previous block if something goes wrong in the read stream API. Suggested-by: Tom Lane <tgl@sss.pgh.pa.us> Discussion: https://postgr.es/m/626104.1739729538%40sss.pgh.pa.us Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/c623e8593ec4ee6987f3cd9350ced7caf8526ed2 Modified Files -------------- src/backend/access/heap/vacuumlazy.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
On Tue, Feb 18, 2025 at 9:30 AM Melanie Plageman <melanieplageman@gmail.com> wrote: > > Reduce scope of heap vacuum per_buffer_data > > Move lazy_scan_heap()'s per_buffer_data variable into a tighter scope. > In lazy_scan_heap()'s phase I heap vacuuming, the read stream API > returns a pointer to the next block number to vacuum. As long as > read_stream_next_buffer() returns a valid buffer, per_buffer_data should > always be valid. Realized I forgot an important word in the commit message. per_buffer_data doesn't point to the block number. It points to info about the next block. Commit message should say "the read stream API returns a pointer to information about the next block to vacuum". Oh well... There is nothing I can do now. - Melanie