Hi,

On Mon, Jan 06, 2025 at 10:32:52PM -0800, Masahiko Sawada wrote:
> On Mon, Jan 6, 2025 at 3:20 AM Ashutosh Bapat
> <ashutosh.bapat....@gmail.com> wrote:
> >
> > On Sat, Jan 4, 2025 at 6:03 AM Masahiko Sawada <sawada.m...@gmail.com> 
> > wrote:
> > >
> > > On Fri, Jan 3, 2025 at 6:31 AM Euler Taveira <eu...@eulerto.com> wrote:
> > > >
> > > > On Fri, Jan 3, 2025, at 10:14 AM, Bertrand Drouvot wrote:
> > > >
> > > > If we don't want to force wal_level = logical to enable logical 
> > > > decoding (your
> > > > second idea) then I think that it would be better to "hide" everything 
> > > > behind
> > > > logical replication slot creation / deletion. That would mean that 
> > > > having at
> > > > least one logical replication slot created would be synonym to 
> > > > "activate logical
> > > > decoding" and zero logical replication slot created would be synonym to 
> > > > "deactivate
> > > > logical decoding".
> > > >
> > > >
> > > > I like this idea. The logical replication slot existence already has the
> > > > required protections and guarantees (no running transactions from the 
> > > > past while
> > > > creating) for logical decoding.
> > >
> > > I agree that it's better behavior.
> > >
> > > >
> > > > Having said that, you are basically folding 'logical' machinery into 
> > > > 'replica'.
> > > > The 'logical' option can still exists but it will be less attractive 
> > > > because it
> > > > increases the WAL volume even if you are not using logical replication. 
> > > > I don't
> > > > know if the current 'logical' behavior (WAL records for logical 
> > > > decoding even
> > > > if there is no active logical replication) has any use case (maybe 
> > > > someone
> > > > inspects these extra records for analysis) but one suggestion (separate 
> > > > patch)
> > > > is to make 'logical' synonymous with the new 'replica' behavior (logical
> > > > decoding capability). This opens the door to remove 'logical' in future
> > > > releases (accepted as synonym but not documented).
> 
> FYI one possible use case of the 'logical' level would be that if we
> support retrieving WAL records for logical decoding from somewhere
> like restore_command in the future, users would like to keep the
> wal_level 'logical' or keep the logical decoding active.

Another use case is to allow logical decoding from standby. One could set
wal_level to logical on the primary to be able to create a logical replication
slot on the standby (without having the need to create one on the primary).

BTW, currently it's mandatory to set wal_level to logical on the primary to
be able to create a logical replication slot on the standby. Should we extend
this to "logical decoding is enabled on the primary" too?

Regards,

-- 
Bertrand Drouvot
PostgreSQL Contributors Team
RDS Open Source Databases
Amazon Web Services: https://aws.amazon.com


Reply via email to