Hi,
On Tue, 4 Aug 2026 at 12:32, Nazir Bilal Yavuz <[email protected]> wrote:
>
> > By default the request is now limited to the whole segments that fit
> within
> > max_wal_size, and force => true bypasses that when you really do want a
> bigger
> > warm-up. A NOTICE is issued only when an explicit request is reduced; a
> plain
> > no-argument call stays quiet.
>
> + if (!force)
> + {
> + int64 maxsegs = XLogMBVarToSegs(max_wal_size_mb,
> + wal_segment_size);
> +
> + if (nsegs > maxsegs)
> + {
> + /*
> + * Only report the reduction for an explicit request; the
> default
> + * (min_wal_size) is expected to fit within max_wal_size.
> + */
> + if (!PG_ARGISNULL(0))
> + ereport(NOTICE,
> + (errmsg("WAL preallocation request was reduced to
> fit "
> + "within \"max_wal_size\""),
> + errdetail("Only whole WAL segments fitting
> within "
> + "\"max_wal_size\" will be
> preallocated."),
> + errhint("Call pg_wal_preallocate() with
> \"force\" set to true "
> + "to bypass this limit.")));
> + nsegs = maxsegs;
> + }
> + }
>
> I think it is not correct to reduce the request to fit within
> max_wal_size. User wants to do something but you change the request
> without any confirmation. I think you should reject the request if
> 'bytes > max_wal_size && !force', and show a notice or error that the
> same request can be done with the force option.
>
Hmm makes sense, thanks for the input. I'll make it so.
Regards,
Ayush