Question: should we block loopback logical replication to the same database?

From: Chao Li <li(dot)evan(dot)chao(at)gmail(dot)com>
To: PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Question: should we block loopback logical replication to the same database?
Date: 2026-04-07 08:26:26
Message-ID: 25C3F6A7-DC52-48AE-B43C-0D8665CAB74A@gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,

While testing a patch today, I tried to set up logical replication on the same cluster. Although I have done that many times before, I made a mistake this time: I accidentally ran the CREATE SUBSCRIPTION command in the source database session, and the subscription was created successfully:
```
evantest=# CREATE SUBSCRIPTION mysub CONNECTION 'host=localhost dbname=evantest user=repl password=secret' PUBLICATION mypub WITH (create_slot = false);
CREATE SUBSCRIPTION
```

After that, something weird started to happen. The destination table was empty, but the logs kept reporting duplicate-key errors. It took me a while to realize that the problem was this mistake.

This made me wonder whether we should block this kind of loopback logical replication to the same database. I am not aware of a way to use different destination table names, so this setup does not seem useful. Blocking it could help prevent this kind of unnecessary mistake.

Before working on a patch, I wanted to check with hackers first. If there are no objections, I can propose a patch. Please let me know if I am missing something.

Best regards,
--
Chao Li (Evan)
HighGo Software Co., Ltd.
https://www.highgo.com/

Browse pgsql-hackers by date

  From Date Subject
Next Message Ilya Cherdakov 2026-04-07 08:31:03 Re: Environment variable to disable diffs file output
Previous Message Andrei Lepikhov 2026-04-07 08:22:48 Re: Clean up remove_rel_from_query() after self-join elimination commit