Обсуждение: Hot standbys now support exporting snapshots while creating a logical replication slot
Hot standbys now support exporting snapshots while creating a logical replication slot
От
PG Doc comments form
Дата:
The following documentation comment has been logged on the website: Page: https://www.postgresql.org/docs/17/logicaldecoding-explanation.html Description: Hi, I'm referring to this bit at the very end of the page: Creation of a snapshot is not always possible. In particular, it will fail when connected to a hot standby. Applications that do not require snapshot export may suppress it with the NOEXPORT_SNAPSHOT option. It's not clear what the intention of this is (is it referring only to physical replication slots?) but as it stands you can export snapshots while creating a logical replication slot. This should have been possible starting PG16, I've tested this on PG17. postgres=# CREATE_REPLICATION_SLOT export LOGICAL pgoutput (SNAPSHOT 'export'); -[ RECORD 1 ]----+-------------------- slot_name | export consistent_point | 0/36C9F28 snapshot_name | 00000072-0000000A-1 output_plugin | pgoutput postgres=# SELECT pg_is_in_recovery(); -[ RECORD 1 ]-----+-- pg_is_in_recovery | t postgres=# SHOW hot_standby; -[ RECORD 1 ]--- hot_standby | on As an aside, I think NOEXPORT_SNAPSHOT is from the older syntax of CREATE_REPLICATION_SLOT and should be swapped with SNAPSHOT 'nothing'. Thanks, Kevin
On 2025/05/22 20:53, PG Doc comments form wrote: > The following documentation comment has been logged on the website: > > Page: https://www.postgresql.org/docs/17/logicaldecoding-explanation.html > Description: > > Hi, > I'm referring to this bit at the very end of the page: Creation of a > snapshot is not always possible. In particular, it will fail when connected > to a hot standby. Applications that do not require snapshot export may > suppress it with the NOEXPORT_SNAPSHOT option. > It's not clear what the intention of this is (is it referring only to > physical replication slots?) but as it stands you can export snapshots while > creating a logical replication slot. This should have been possible starting > PG16, I've tested this on PG17. The description "Creation of a snapshot is not always possible. In particular, it will fail when connected to a hot standby." no longer seems accurate. Since v10 (commit 6c2003f8a1b), exporting snapshots on a standby has been supported. This description was accurate when the first patch [1] adding that description was written, but I think we just overlooked updating it later. > As an aside, I think NOEXPORT_SNAPSHOT is from the older syntax of > CREATE_REPLICATION_SLOT and should be swapped with SNAPSHOT 'nothing'. Yes, so how about the following change? <para> - Creation of a snapshot is not always possible. In particular, it will - fail when connected to a hot standby. Applications that do not require - snapshot export may suppress it with the <literal>NOEXPORT_SNAPSHOT</literal> + Applications that do not require + snapshot export may suppress it with the <literal>SNAPSHOT 'nothing'</literal> option. </para> Regards, [1] https://www.postgresql.org/message-id/CAMsr+YFjxv0T8Yi1Q=3tVdgViU2bm+fb_-XUbTfxHsnLDNSkzg@mail.gmail.com Regards, -- Fujii Masao Advanced Computing Technology Center Research and Development Headquarters NTT DATA CORPORATION