At Tue, 24 May 2022 10:19:53 +0900 (JST), Kyotaro Horiguchi <horikyota.ntt@gmail.com> wrote in
> At Mon, 23 May 2022 10:08:54 -0400, Tom Lane <tgl@sss.pgh.pa.us> wrote in
> > Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com> writes:
> > > Thanks. Having check hooks for min_wal_size and max_wal_size that
> > > throw errors if they aren't at least twice the wal_segment_size has a
> > > "BIG" problem - ./initdb -D data --wal-segsize=1 (or a value < 16)
> > > fails.
> >
> > In general, you can't do that (i.e. try to enforce constraints between
> > GUC values via check hooks). It's been tried in the past and failed
> > miserably, because the hooks can't know whether the other value is
> > about to be changed.
>
> I thought that wal_segment_size is a semi-constant for a server life.
> But looking at the startup sequence closely, postmaster tries
> changing max_wal_size before reading control file.
>
> Couldn't we use PGC_S_TEST for this purpose? AlterSystemSetConfigFile
> is calling parse_and_validate_value() with PGC_S_FILE, but it is
> actually a "value to be used later"(@guc.h:93). So it can be thought
> that PG_S_TEST is the right choice there. If it is still not work
> perfectly, we could have a new source value, say PGC_S_ALTER_SYSTEM,
> exactly for this use. (but I don't see a following users comes in
> future..)
This duscussion is based on the assumption that "wal_segment_size can
be assumed to be a constant when a check function is called with
PGC_S_FILE".
regards.
--
Kyotaro Horiguchi
NTT Open Source Software Center