At Mon, 23 May 2022 10:08:54 -0400, Tom Lane <t...@sss.pgh.pa.us> wrote in > Bharath Rupireddy <bharath.rupireddyforpostg...@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..) regards. -- Kyotaro Horiguchi NTT Open Source Software Center