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).
>
> To enable the logical decoding automatically when the first slot is
> created, probably we need to do something like:
>
> 1. enable WAL-logging logical info.
> 2. wait for all running transactions to finish.
> 3. enable logical decoding, and write a XLOG_LOGICAL_DECODING_STATUS record,
> 4. create a logical slot
>   4-1. reserve the WAL and write an XLOG_RUNNING_XACTS record.
>   4-2. wait for all transactions in the XLOG_RUNNING_XACTS record to
> finish during creating the initial snapshot.

A naive question: Can we combine step 2 and 4-2 - may be we need to
combine 4-1 and 3 too.

-- 
Best Wishes,
Ashutosh Bapat


Reply via email to