Thread

  1. Re: Streamify more code paths

    Nazir Bilal Yavuz <byavuz81@gmail.com> — 2025-12-29T10:58:19Z

    Hi,
    
    On Sun, 28 Dec 2025 at 14:46, Xuneng Zhou <xunengzhou@gmail.com> 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.
    
    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.
    
    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!
    
    -- 
    Regards,
    Nazir Bilal Yavuz
    Microsoft