Re: Use read streams in CREATE DATABASE command when the strategy is wal_log

Nazir Bilal Yavuz <byavuz81@gmail.com>

From: Nazir Bilal Yavuz <byavuz81@gmail.com>
To: Noah Misch <noah@leadboat.com>
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2024-07-20T12:01:31Z
Lists: pgsql-hackers
Hi,

On Sat, 20 Jul 2024 at 14:27, Noah Misch <noah@leadboat.com> wrote:
>
> On Thu, Jul 18, 2024 at 02:11:13PM +0300, Nazir Bilal Yavuz wrote:
> > v4 is attached.
>
> Removal of the PinBufferForBlock() comment about the "persistence =
> RELPERSISTENCE_PERMANENT" fallback started to feel like a loss.  I looked for
> a way to re-add a comment about the fallback.
> https://coverage.postgresql.org/src/backend/storage/buffer/bufmgr.c.gcov.html
> shows no test coverage of that fallback, and I think the fallback is
> unreachable.  Hence, I've removed the fallback in a separate commit.  I've
> pushed that and your three patches.  Thanks.

Thanks for the separate commit and push!

With the separate commit (e00c45f685), does it make sense to rename
the smgr_persistence parameter of the ReadBuffer_common() to
persistence? Because, ExtendBufferedRelTo() calls ReadBuffer_common()
with rel's persistence now, not with smgr's persistence.

-- 
Regards,
Nazir Bilal Yavuz
Microsoft



Commits

  1. Fix private struct field name to match the code using it.

  2. Add a way to create read stream object by using SMgrRelation.

  3. Refactor PinBufferForBlock() to remove checks about persistence.

  4. Remove "smgr_persistence == 0" dead code.

  5. Use read streams in CREATE DATABASE when STRATEGY=WAL_LOG.