Add optional pid parameter to pg_replication_origin_session_setup().
authorAmit Kapila <[email protected]>
Fri, 19 Sep 2025 05:38:40 +0000 (05:38 +0000)
committerAmit Kapila <[email protected]>
Fri, 19 Sep 2025 05:38:40 +0000 (05:38 +0000)
commit5b148706c5c8ffffe5662fe569a0f0bcef2351d9
tree957ed0d501fbbff5c70382f1f98819b9be6608f9
parent8aac5923a3611aa89998368a09c54892b93ebdd9
Add optional pid parameter to pg_replication_origin_session_setup().

Commit 216a784829c introduced parallel apply workers, allowing multiple
processes to share a replication origin. To support this,
replorigin_session_setup() was extended to accept a pid argument
identifying the process using the origin.

This commit exposes that capability through the SQL interface function
pg_replication_origin_session_setup() by adding an optional pid parameter.
This enables multiple processes to coordinate replication using the same
origin when using SQL-level replication functions.

This change allows the non-builtin logical replication solutions to
implement parallel apply for large transactions.

Additionally, an existing internal error was made user-facing, as it can
now be triggered via the exposed SQL API.

Author: Doruk Yilmaz <[email protected]>
Author: Hayato Kuroda <[email protected]>
Reviewed-by: Amit Kapila <[email protected]>
Reviewed-by: Euler Taveira <[email protected]>
Discussion: https://postgr.es/m/CAMPB6wfe4zLjJL8jiZV5kjjpwBM2=rTRme0UCL7Ra4L8MTVdOg@mail.gmail.com
Discussion: https://postgr.es/m/CAE2gYzyTSNvHY1+iWUwykaLETSuAZsCWyryokjP6rG46ZvRgQA@mail.gmail.com
contrib/test_decoding/Makefile
contrib/test_decoding/expected/parallel_session_origin.out [new file with mode: 0644]
contrib/test_decoding/expected/replorigin.out
contrib/test_decoding/meson.build
contrib/test_decoding/specs/parallel_session_origin.spec [new file with mode: 0644]
contrib/test_decoding/sql/replorigin.sql
doc/src/sgml/func/func-admin.sgml
src/backend/catalog/system_functions.sql
src/backend/replication/logical/origin.c
src/include/catalog/catversion.h
src/include/catalog/pg_proc.dat