Why do spgbuildempty(), btbuildempty(), and blbuildempty() use smgrwrite()? - Mailing list pgsql-hackers

From Melanie Plageman
Subject Why do spgbuildempty(), btbuildempty(), and blbuildempty() use smgrwrite()?
Date
Msg-id CAAKRu_b6-NX8OKs02_WRcyuDwf0qBsRa7-Ecp3dGMxKHokzTMQ@mail.gmail.com
Whole thread Raw
Responses Re: Why do spgbuildempty(), btbuildempty(), and blbuildempty() use smgrwrite()?  (Kyotaro Horiguchi <horikyota.ntt@gmail.com>)
List pgsql-hackers
If you enable the CHECK_WRITE_VS_EXTEND-protected assert in mdwrite(),
you'll trip it anytime you exercise btbuildempty(), blbuildempty(), or
spgbuildempty().

In this case, it may not make any meaningful difference if smgrwrite()
or smgrextend() is called (_mdfd_getseg() behavior won't differ even
with the different flags, so really only the FileWrite() wait event will
be different).
However, it seems like it should still be changed to call smgrextend().
Or, since they only write a few pages, why not use shared buffers like
gistbuildempty() and brinbuildempty() do?

I've attached a patch to move these three into shared buffers.

And, speaking of spgbuildempty(), there is no test exercising it in
check-world, so I've attached a patch to do so. I wasn't sure if it
belonged in spgist.sql or create_index_spgist.sql (on name alone, seems
like the latter but based on content, seems like the former).

- Melanie

Attachment

pgsql-hackers by date:

Previous
From: Tatsuo Ishii
Date:
Subject: Re: Proposal: Support custom authentication methods using hooks,Re: Proposal: Support custom authentication methods using hooks
Next
From: Justin Pryzby
Date:
Subject: Re: Avoiding smgrimmedsync() during nbtree index builds