Re: [Proposal] Fully WAL logged CREATE DATABASE - No Checkpoints

Bruce Momjian <bruce@momjian.us>

From: Bruce Momjian <bruce@momjian.us>
To: Robert Haas <robertmhaas@gmail.com>
Cc: Andrew Dunstan <andrew@dunslane.net>, Dilip Kumar <dilipbalaut@gmail.com>, Heikki Linnakangas <hlinnaka@iki.fi>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2022-02-11T18:32:46Z
Lists: pgsql-hackers
On Fri, Feb 11, 2022 at 01:18:58PM -0500, Robert Haas wrote:
> On Fri, Feb 11, 2022 at 12:50 PM Bruce Momjian <bruce@momjian.us> wrote:
> > On Fri, Feb 11, 2022 at 12:35:50PM -0500, Robert Haas wrote:
> > > How about something like LOG_AS_CLONE? That makes it clear, I hope,
> > > that we're logging it a different way, but that method of logging it
> > > is different in each case. You'd still have to read the documentation
> > > to find out what it really means, but at least it seems like it points
> > > you more in the right direction. To me, anyway.
> >
> > I think CLONE would be confusing since we don't use that term often,
> > maybe LOG_DB_COPY or LOG_FILE_COPY?
> 
> Yeah, maybe. But it's not clear to me with that kind of naming whether
> TRUE or FALSE would be the existing behavior? One version logs a
> single record for the whole database, and the other logs a record per
> database block. Neither version logs per file. LOG_COPIED_BLOCKS,
> maybe?

Yes, I like BLOCKS more than FILE.

-- 
  Bruce Momjian  <bruce@momjian.us>        https://momjian.us
  EDB                                      https://enterprisedb.com

  If only the physical world exists, free will is an illusion.




Commits

  1. When using the WAL-logged CREATE DATABASE strategy, bulk extend.

  2. Avoid using a fake relcache entry to own an SmgrRelation.

  3. Fix data-corruption hazard in WAL-logged CREATE DATABASE.

  4. initdb: When running CREATE DATABASE, use STRATEGY = WAL_COPY.

  5. Simplify a needlessly-complicated regular expression.

  6. In 020_createdb.pl, change order of command-line arguments.

  7. Add new block-by-block strategy for CREATE DATABASE.

  8. Fix replay of create database records on standby

  9. Refactor code for reading and writing relation map files.

  10. Replace RelationOpenSmgr() with RelationGetSmgr().

  11. Refactor the fsync queue for wider use.