Hi, Thanks for looking into this.
On Mon, Dec 29, 2025 at 6:58 PM Nazir Bilal Yavuz <[email protected]> wrote: > > Hi, > > On Sun, 28 Dec 2025 at 14:46, Xuneng Zhou <[email protected]> wrote: > > > > Hi, > > > > > > Two more to go: > > > patch 5: Streamify log_newpage_range() WAL logging path > > > patch 6: Streamify hash index VACUUM primary bucket page reads > > > > > > Benchmarks will be conducted soon. > > > > > > > v6 in the last message has a problem and has not been updated. Attach > > the right one again. Sorry for the noise. > > 0003 and 0006: > > You need to add 'StatApproxReadStreamPrivate' and > 'HashBulkDeleteStreamPrivate' to the typedefs.list. Done. > 0005: > > @@ -1321,8 +1341,10 @@ log_newpage_range(Relation rel, ForkNumber forknum, > nbufs = 0; > while (nbufs < XLR_MAX_BLOCK_ID && blkno < endblk) > { > - Buffer buf = ReadBufferExtended(rel, forknum, blkno, > - RBM_NORMAL, NULL); > + Buffer buf = read_stream_next_buffer(stream, NULL); > + > + if (!BufferIsValid(buf)) > + break; > > We are loosening a check here, there should not be a invalid buffer in > the stream until the endblk. I think you can remove this > BufferIsValid() check, then we can learn if something goes wrong. My concern before for not adding assert at the end of streaming is the potential early break in here: /* Nothing more to do if all remaining blocks were empty. */ if (nbufs == 0) break; After looking more closely, it turns out to be a misunderstanding of the logic. > 0006: > > You can use read_stream_reset() instead of read_stream_end(), then you > can use the same stream with different variables, I believe this is > the preferred way. > > Rest LGTM! > Yeah, reset seems a more proper way here. -- Best, Xuneng
v3-0003-Streamify-heap-bloat-estimation-scan.-Introduce-a.patch
Description: Binary data
v3-0005-Streamify-log_newpage_range-WAL-logging-path.patch
Description: Binary data
v3-0002-Streamify-Bloom-VACUUM-paths.-n-nUse-streaming-re.patch
Description: Binary data
v3-0001-Switch-Bloom-scan-paths-to-streaming-read.-n-nRep.patch
Description: Binary data
v3-0004-Replace-synchronous-ReadBufferExtended-loop-with-.patch
Description: Binary data
v3-0006-Streamify-hash-index-VACUUM-primary-bucket-page-r.patch
Description: Binary data
