Subject: Logical decoding

From: Jethish Jethish <[email-masked]>
Date: Thu, 20 Feb 2025 10:34:05 +0530

Hi everyone,

Is there is any option to perform logical decoding on an active replication
slot.
I'm trying to decode a replication slot but it throughs an error as below.

ERROR: replication slot "my_sub" is active for PID 2525720

---

From: Tomas Vondra <[email-masked]>
Date: Thu, 20 Feb 2025 10:27:17 +0100

On 2/20/25 06:04, Jethish Jethish wrote:
> Hi everyone,
> 
> Is there is any option to perform logical decoding on an active
> replication slot.

No, not really. The whole point of this error is to prevent exactly
this, pretty much - to only allow a single process doing logical
decoding on a slot.

What are you trying to solve / achieve? Why do you need (or think you
need) logical decoding on an active slot?

regards

-- 
Tomas Vondra

---

From: Justin <[email-masked]>
Date: Fri, 21 Feb 2025 16:45:16 -0500

> ERROR: replication slot "my_sub" is active for PID 2525720

Hi Jethish,

You can by copying the LR slot

SELECT  pg_copy_logical_replication_slot ( '<slot_name>', --source slot
'peek', --destination slot name
true,  --lets make a temporary slot, so we don't have clean up after
ourselves
'test_decoding' --plugin name can be any LR plugin this one let's us see
what is going on
)

Then peek at what the slot is doing

SELECT * FROM pg_logical_slot_peek_changes('peek' , --name of the slot
NULL, --lsn number to start from  can jump ahead,
1 ); --how many transaction to get back from the query this will return
multiple rows for each row affect by the transaction.

select pg_drop_replication_slot(<slot_name>)  --how we drop the slot