Subject: Create replication slot options

From: Phillip Diffley <[email-masked]>
Date: Mon, 24 Mar 2025 19:31:57 -0500

I am testing out some streaming logical replication commands and am having
trouble specifying options when calling CREATE_REPLICATION_SLOT
<https://www.postgresql.org/docs/current/protocol-replication.html#PROTOCOL-REPLICATION-CREATE-REPLICATION-SLOT>
.

I connect to the database with
psql "dbname=replication_test_db replication=database"

Then I am able to successfully run
CREATE_REPLICATION_SLOT test_slot LOGICAL pgoutput;

But if I try to specify the snapshot option with
CREATE_REPLICATION_SLOT test_slot_2 LOGICAL pgoutput SNAPSHOT 'nothing';
the command fails with "ERROR:  syntax error"

I have tried several combinations of brackets commas and equals signs but
have not been able to get the command with additional options to work. What
is the right syntax to use here?

Thanks,
Phillip

---

From: Christophe Pettus <[email-masked]>
Date: Mon, 24 Mar 2025 17:37:30 -0700

> On Mar 24, 2025, at 17:31, Phillip Diffley <[email-masked]> wrote:
> 
> I am testing out some streaming logical replication commands and am having trouble specifying options when calling CREATE_REPLICATION_SLOT.
> 
> I have tried several combinations of brackets commas and equals signs but have not been able to get the command with additional options to work. What is the right syntax to use here?

The options after LOGICAL <output_plugin > need to be in parentheses:

	CREATE_REPLICATION_SLOT test_slot_2 LOGICAL pgoutput ( SNAPSHOT 'nothing' );

In the PostgreSQL documentation, parentheses mean literal parentheses rather than being part of the grammar.