Re: POC: enable logical decoding when wal_level = 'replica' without a server restart - Mailing list pgsql-hackers

From shveta malik
Subject Re: POC: enable logical decoding when wal_level = 'replica' without a server restart
Date
Msg-id CAJpy0uATYb__vFTarm7jqP+uYHj5D3t56NT=gVJbTrPX1_3HUA@mail.gmail.com
Whole thread Raw
In response to Re: POC: enable logical decoding when wal_level = 'replica' without a server restart  (Peter Smith <smithpb2250@gmail.com>)
List pgsql-hackers
On Mon, Oct 27, 2025 at 6:24 AM Peter Smith <smithpb2250@gmail.com> wrote:
>
> Hi Sawada.
>
> A couple of comments for v22-0001.
>
> ======
>
> 1.
> + /*
> + * We don't need this warning message when wal_level >= 'replica' since
> + * logical decoding is automatically enabled up on a logical slot
> + * creation.
> + */
> + if (wal_level == WAL_LEVEL_MINIMAL)
>   ereport(WARNING,
>   (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
> - errmsg("\"wal_level\" is insufficient to publish logical changes"),
> - errhint("Set \"wal_level\" to \"logical\" before creating subscriptions.")));
> + errmsg("logical decoding must be enabled to publish logical changes"),
> + errhint("Before creating subscriptions, set \"wal_level\" >=
> \"logical\" or create a logical replication slot when \"wal_level\" =
> \"replica\".")));
>
> 1a.
> Sorry, for repeating the same question about the HINT message, but
> AFAICT I did not yet notice any reply to directly reject or address my
> question.
>
> Basically, I felt the errhint part that says "...or create a logical
> replication slot when wal_level = replica." is overkill, because
> creating the subscription will do that anyway.
> In other words, we don't need to tell the user this is needed "Before
> creating subscriptions". So, I thought the only requirement to be able
> to publish a subscription is for wal_level >= replica.
>
> SUGGESTION
> errhint("Before creating subscriptions, set \"wal_level\" >= \"replica\".")
>

While verifying the patch, I too noticed this case. On latest patch,
with wal_level=minimal, CREATE PUBLICATION gives this:

postgres=# create publication pub1;
WARNING:  logical decoding must be enabled to publish logical changes
HINT:  Before creating subscriptions, set "wal_level" >= "logical" or
create a logical replication slot when "wal_level" = "replica".

I don’t have a strong opinion on this, but I’m slightly inclined
toward Peter’s suggestion on HINT.

thanks
Shveta



pgsql-hackers by date:

Previous
From: shveta malik
Date:
Subject: Re: Report bytes and transactions actually sent downtream
Next
From: Dean Rasheed
Date:
Subject: Re: Docs and tests for RLS policies applied by command type