On Wed, Oct 22, 2025 at 11:12 PM Tom Lane <[email protected]> wrote: > The reason it thinks that num_offsets could be as much as 2048 is > presumably the code a little bit above this: > > OffsetNumber offsets[MaxOffsetNumber]; > ... > num_offsets = TidStoreGetBlockOffsets(iter_result, offsets, > lengthof(offsets)); > Assert(num_offsets <= lengthof(offsets)); > > However, lazy_vacuum_heap_page blindly assumes that the passed value > will be no more than MaxHeapTuplesPerPage. It seems like we ought > to get these two functions in sync, either both using MaxOffsetNumber > or both using MaxHeapTuplesPerPage for their array sizes. > > It looks to me like MaxHeapTuplesPerPage should be sufficient.
Seems right. > Also, after reading TidStoreGetBlockOffsets I wonder if we > should replace that Assert with > > num_offsets = Min(num_offsets, lengthof(offsets)); > > Thoughts? Not sure. That changes the posture from "can't happen" to "shouldn't happen, but if it does, don't cause a disaster". Even with the latter, the assert still seems appropriate for catching developer mistakes. -- John Naylor Amazon Web Services
