On Tue, Jun 15, 2021 at 04:50:24PM +0530, Dilip Kumar wrote: > Currently, CREATE DATABASE forces a checkpoint, then copies all the > files, then forces another checkpoint. The comments in the createdb() > function explain the reasons for this. The attached patch fixes this > problem by making CREATE DATABASE completely WAL-logged so that now we > can avoid checkpoints. The patch modifies both CREATE DATABASE and > ALTER DATABASE..SET TABLESPACE to be fully WAL-logged. > > One main advantage of this change is that it will be cheaper. Forcing > checkpoints on an idle system is no big deal, but when the system is > under heavy write load, it's very expensive. Another advantage is that > it makes things better for features like TDE, which might want the > pages in the source database to be encrypted using a different key or > nonce than the pages in the target database.
I only had a quick look at the patch but AFAICS your patch makes the new behavior mandatory. Wouldn't it make sense to have a way to use the previous approach? People creating wanting to copy somewhat big database and with a slow replication may prefer to pay 2 checkpoints rather than stream everything. Same for people who have an otherwise idle system (I often use that to make temporary backups and/or prepare multiple dataset and most of the time the checkpoint is basically free).