BUG #18540: Does PG16 standby database support function pg_replication_origin_advance?

Started by PG Bug reporting formalmost 2 years ago4 messagesbugs
Jump to latest
#1PG Bug reporting form
noreply@postgresql.org

The following bug has been logged on the website:

Bug reference: 18540
Logged by: Does PG16 standby database support function pg_replication_origin_advance?
Email address: jason.chentj@homecredit.cn
PostgreSQL version: 16.1
Operating system: Red Hat Enterprise Linux Server release 7.9
Description:

Hi Guys,

am testing the PG 16 VERSION standby database replicate slot function. when
I issue below command to move the offset for replicate slot on standby
database got below error:

db_plumc=# select
pg_replication_origin_advance('standbyslot','5EE/5D1B13F8'::pg_lsn);
ERROR: cannot manipulate replication origins during recovery

Seems the function pg_replication_origin_advance is not supported running on
standby instance. It there any workaround for it?

Thanks
Jason

#2Michael Paquier
michael@paquier.xyz
In reply to: PG Bug reporting form (#1)
Re: BUG #18540: Does PG16 standby database support function pg_replication_origin_advance?

On Mon, Jul 15, 2024 at 08:28:26AM +0000, PG Bug reporting form wrote:

Seems the function pg_replication_origin_advance is not supported running on
standby instance. It there any workaround for it?

Not that I know of. One would need to study how to lift this
restriction in place since the introduction of replication origins in
5aa2350426c4.
--
Michael

#3Jason ChenTJ (CN)
Jason.ChenTJ@homecredit.cn
In reply to: Michael Paquier (#2)
回复: [External]Re: BUG #18540: Does PG16 standby database support function pg_replication_origin_advance?

Hi Michael,

Thanks for your reply!

I just check the patch: https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=5aa235042

The related source code located on src/backend/replication/logical/origin.c and it's marked as new file .

[cid:9554a9eb-7db8-400f-a815-21f3de8917e7]

The error is from this function: replorigin_check_prerequisites

[cid:57394eb2-b636-4c7f-8c99-c0ecdc3de3a5]

And you perform the WAL log offset reset function, must do a validation by replorigin_check_prerequisites.

[cid:856de95d-cc1d-4f6e-91cc-27575f3fc243]

So am not sure it's a bug or not on standby database, or some dev can fix it on next version?
(like add some logicals to identify the database role first...)

========================================================================================
On Mon, Jul 15, 2024 at 08:28:26AM +0000, PG Bug reporting form wrote:

Seems the function pg_replication_origin_advance is not supported running on
standby instance. It there any workaround for it?

Not that I know of. One would need to study how to lift this
restriction in place since the introduction of replication origins in
5aa2350426c4.
--
Michael
========================================================================================

Thanks
Jason
________________________________
发件人: Michael Paquier <michael@paquier.xyz>
发送时间: 2024年7月16日 9:00
收件人: Jason ChenTJ (CN) <Jason.ChenTJ@homecredit.cn>; pgsql-bugs@lists.postgresql.org <pgsql-bugs@lists.postgresql.org>
主题: [External]Re: BUG #18540: Does PG16 standby database support function pg_replication_origin_advance?

This message is from an EXTERNAL SENDER - be CAUTIOUS, particularly with links and attachments.
________________________________

Attachments:

image.pngimage/png; name=image.pngDownload
image.pngimage/png; name=image.pngDownload
image.pngimage/png; name=image.pngDownload
#4Bertrand Drouvot
bertranddrouvot.pg@gmail.com
In reply to: Jason ChenTJ (CN) (#3)
Re: 回复: [External]Re: BUG #18540: Does PG16 standby database support function pg_replication_origin_advance?

Hi,

On Mon, Jul 22, 2024 at 02:51:35AM +0000, Jason ChenTJ (CN) wrote:

Hi Michael,

Thanks for your reply!

I just check the patch: https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=5aa235042

The related source code located on src/backend/replication/logical/origin.c and it's marked as new file .

[cid:9554a9eb-7db8-400f-a815-21f3de8917e7]

The error is from this function: replorigin_check_prerequisites

[cid:57394eb2-b636-4c7f-8c99-c0ecdc3de3a5]

And you perform the WAL log offset reset function, must do a validation by replorigin_check_prerequisites.

[cid:856de95d-cc1d-4f6e-91cc-27575f3fc243]

So am not sure it's a bug or not on standby database, or some dev can fix it on next version?
(like add some logicals to identify the database role first...)

As one can not create a subscription on a standby nor execute pg_replication_origin_create()
on a standby then I think that the only way to get a replication origin on a
standby is when it comes from the primary (i.e if a subscription has been created
on the primary or one executed pg_replication_origin_create() on the primary).

Then it seems to me that pg_replication_origin_advance() should be executed on
the primary (if needed).

Could you please describe your use case?

Regards,

--
Bertrand Drouvot
PostgreSQL Contributors Team
RDS Open Source Databases
Amazon Web Services: https://aws.amazon.com