mirror of
https://git.postgresql.org/git/postgresql.git
synced 2026-02-20 13:27:00 +08:00
This patch allows PREPARE-time decoding of two-phase transactions (if the output plugin supports this capability), in which case the transactions are replayed at PREPARE and then committed later when COMMIT PREPARED arrives. Now that we decode the changes before the commit, the concurrent aborts may cause failures when the output plugin consults catalogs (both system and user-defined). We detect such failures with a special sqlerrcode ERRCODE_TRANSACTION_ROLLBACK introduced by commit 7259736a6e and stop decoding the remaining changes. Then we rollback the changes when rollback prepared is encountered. Author: Ajin Cherian and Amit Kapila based on previous work by Nikhil Sontakke and Stas Kelvich Reviewed-by: Amit Kapila, Peter Smith, Sawada Masahiko, Arseny Sher, and Dilip Kumar Tested-by: Takamichi Osumi Discussion: https://postgr.es/m/02DA5F5E-CECE-4D9C-8B4B-418077E2C010@postgrespro.ru https://postgr.es/m/CAMGcDxeqEpWj3fTXwqhSwBdXd2RS9jzwWscO-XbeCfso6ts3+Q@mail.gmail.com
35 lines
1.2 KiB
Makefile
35 lines
1.2 KiB
Makefile
# contrib/test_decoding/Makefile
|
|
|
|
MODULES = test_decoding
|
|
PGFILEDESC = "test_decoding - example of a logical decoding output plugin"
|
|
|
|
REGRESS = ddl xact rewrite toast permissions decoding_in_xact \
|
|
decoding_into_rel binary prepared replorigin time messages \
|
|
spill slot truncate stream stats twophase twophase_stream
|
|
ISOLATION = mxact delayed_startup ondisk_startup concurrent_ddl_dml \
|
|
oldest_xmin snapshot_transfer subxact_without_top concurrent_stream
|
|
|
|
REGRESS_OPTS = --temp-config $(top_srcdir)/contrib/test_decoding/logical.conf
|
|
ISOLATION_OPTS = --temp-config $(top_srcdir)/contrib/test_decoding/logical.conf
|
|
|
|
# Disabled because these tests require "wal_level=logical", which
|
|
# typical installcheck users do not have (e.g. buildfarm clients).
|
|
NO_INSTALLCHECK = 1
|
|
|
|
ifdef USE_PGXS
|
|
PG_CONFIG = pg_config
|
|
PGXS := $(shell $(PG_CONFIG) --pgxs)
|
|
include $(PGXS)
|
|
else
|
|
subdir = contrib/test_decoding
|
|
top_builddir = ../..
|
|
include $(top_builddir)/src/Makefile.global
|
|
include $(top_srcdir)/contrib/contrib-global.mk
|
|
endif
|
|
|
|
# But it can nonetheless be very helpful to run tests on preexisting
|
|
# installation, allow to do so, but only if requested explicitly.
|
|
installcheck-force:
|
|
$(pg_regress_installcheck) $(REGRESS)
|
|
$(pg_isolation_regress_installcheck) $(ISOLATION)
|