Thread

  1. Re: Streamify more code paths

    Xuneng Zhou <xunengzhou@gmail.com> — 2025-12-26T16:41:05Z

    Hi Bilal,
    
    Thanks for your review!
    
    On Fri, Dec 26, 2025 at 6:59 PM Nazir Bilal Yavuz <byavuz81@gmail.com> wrote:
    >
    > Hi,
    >
    > Thank you for working on this!
    >
    > On Thu, 25 Dec 2025 at 09:34, Xuneng Zhou <xunengzhou@gmail.com> wrote:
    > >
    > > Hi,
    > >
    > > On Thu, Dec 25, 2025 at 1:51 PM Xuneng Zhou <xunengzhou@gmail.com> wrote:
    > > >
    > > > Hi Hackers,
    > > >
    > > > I noticed several additional paths in contrib modules, beyond [1],
    > > > that are potentially suitable for streamification:
    > > >
    > > > 1) pgstattuple — pgstatapprox.c and parts of pgstattuple_approx_internal
    > > > 2) Bloom — scan paths in blgetbitmap() and maintenance paths in blbulkdelete()
    > > >
    > > > The following patches streamify those code paths. No benchmarks have
    > > > been run yet.
    > > >
    > > > [1] https://www.postgresql.org/message-id/flat/CABPTF7UeN2o-trr9r7K76rZExnO2M4SLfvTfbUY2CwQjCekgnQ%40mail.gmail.com
    > > >
    > > > Feedbacks welcome.
    > > >
    > >
    > > One more in ginvacuumcleanup().
    >
    > 0001, 0002 and 0004 LGTM.
    >
    > 0003:
    >
    > +        buf = read_stream_next_buffer(stream, NULL);
    > +        if (buf == InvalidBuffer)
    > +            break;
    >
    > I think we are loosening the check here. We were sure that there were
    > no InvalidBuffers until the nblocks. Streamified version does not have
    > this check, it exits from the loop the first time it sees an
    > InvalidBuffer, which may be wrong. You might want to add
    > 'Assert(p.current_blocknum == nblocks);' before read_stream_end() to
    > have a similar check.
    >
    
    Agree. The check has been added in v2 per your suggestion.
    
    --
    Best,
    Xuneng