BTW ... I noticed while fooling with this that GUC's out-of-range
messages can be confusing:
regression=# set vacuum_cost_delay = '1s';
ERROR: 1000 is outside the valid range for parameter "vacuum_cost_delay" (0 .. 100)
One's immediate reaction to that is "I put in 1, not 1000". I think
it'd be much clearer if we included the unit we'd converted to, thus:
ERROR: 1000 ms is outside the valid range for parameter "vacuum_cost_delay" (0 .. 100)
(Notice that this also implicitly tells what units the range limits
are being quoted in. We could repeat the unit name in that part,
viz "(0 .. 100 ms)", but it seems unnecessary.)
A small problem with this idea is that GUC_UNIT_[X]BLOCK variables don't
really have a natural unit name. If we follow the lead of pg_settings,
such errors would look something like
ERROR: 1000 8kB is outside the valid range for ...
I can't think of a better idea, though, and it'd still be clearer than
what happens now.
Barring objections I'll go make this happen.
regards, tom lane