Amit Kapila 5b148706c5 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 <doruk@mixrank.com>
Author: Hayato Kuroda <kuroda.hayato@fujitsu.com>
Reviewed-by: Amit Kapila <amit.kapila16@gmail.com>
Reviewed-by: Euler Taveira <euler@eulerto.com>
Discussion: https://postgr.es/m/CAMPB6wfe4zLjJL8jiZV5kjjpwBM2=rTRme0UCL7Ra4L8MTVdOg@mail.gmail.com
Discussion: https://postgr.es/m/CAE2gYzyTSNvHY1+iWUwykaLETSuAZsCWyryokjP6rG46ZvRgQA@mail.gmail.com
2025-09-19 05:38:40 +00:00

81 lines
1.8 KiB
Meson

# Copyright (c) 2022-2025, PostgreSQL Global Development Group
test_decoding_sources = files(
'test_decoding.c',
)
if host_system == 'windows'
test_decoding_sources += rc_lib_gen.process(win32ver_rc, extra_args: [
'--NAME', 'test_decoding',
'--FILEDESC', 'test_decoding - example of a logical decoding output plugin',])
endif
test_decoding = shared_module('test_decoding',
test_decoding_sources,
kwargs: contrib_mod_args,
)
contrib_targets += test_decoding
tests += {
'name': 'test_decoding',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'regress': {
'sql': [
'ddl',
'xact',
'rewrite',
'toast',
'permissions',
'decoding_in_xact',
'decoding_into_rel',
'binary',
'prepared',
'replorigin',
'time',
'messages',
'spill',
'slot',
'truncate',
'stream',
'stats',
'twophase',
'twophase_stream',
],
'regress_args': [
'--temp-config', files('logical.conf'),
],
# Disabled because these tests require "wal_level=logical", which
# typical runningcheck users do not have (e.g. buildfarm clients).
'runningcheck': false,
},
'isolation': {
'specs': [
'mxact',
'delayed_startup',
'ondisk_startup',
'catalog_change_snapshot',
'concurrent_ddl_dml',
'oldest_xmin',
'snapshot_transfer',
'subxact_without_top',
'concurrent_stream',
'twophase_snapshot',
'slot_creation_error',
'skip_snapshot_restore',
'invalidation_distribution',
'parallel_session_origin',
],
'regress_args': [
'--temp-config', files('logical.conf'),
],
# see above
'runningcheck': false,
},
'tap': {
'tests': [
't/001_repl_stats.pl',
],
},
}