At Tue, 24 May 2022 10:19:53 +0900 (JST), Kyotaro Horiguchi <horikyota....@gmail.com> wrote in > 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..)
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