postgres/contrib
Masahiko Sawada 072ee847ad Skip logical decoding of already-aborted transactions.
Previously, transaction aborts were detected concurrently only during
system catalog scans while replaying a transaction in streaming mode.

This commit adds an additional CLOG lookup to check the transaction
status, allowing the logical decoding to skip changes also when it
doesn't touch system catalogs, if the transaction is already
aborted. This optimization enhances logical decoding performance,
especially for large transactions that have already been rolled back,
as it avoids unnecessary disk or network I/O.

To avoid potential slowdowns caused by frequent CLOG lookups for small
transactions (most of which commit), the CLOG lookup is performed only
for large transactions before eviction. The performance benchmark
results showed there is not noticeable performance regression due to
CLOG lookups.

Reviewed-by: Amit Kapila, Peter Smith, Vignesh C, Ajin Cherian
Reviewed-by: Dilip Kumar, Andres Freund
Discussion: https://postgr.es/m/CAD21AoDht9Pz_DFv_R2LqBTBbO4eGrpa9Vojmt5z5sEx3XwD7A@mail.gmail.com
2025-02-12 16:31:34 -08:00
..
amcheck Fix grammatical typos around possessive "its" 2025-01-29 14:39:14 +07:00
auth_delay Update copyright for 2025 2025-01-01 11:21:55 -05:00
auto_explain Update copyright for 2025 2025-01-01 11:21:55 -05:00
basebackup_to_shell Improve grammar of options for command arrays in TAP tests 2025-01-22 14:47:13 +09:00
basic_archive Update copyright for 2025 2025-01-01 11:21:55 -05:00
bloom Add is_analyze parameter to vacuum_delay_point(). 2025-02-11 16:38:14 -06:00
bool_plperl Update copyright for 2025 2025-01-01 11:21:55 -05:00
btree_gin Update copyright for 2025 2025-01-01 11:21:55 -05:00
btree_gist Move CompareType to separate header file 2025-02-02 08:11:57 +01:00
citext Update copyright for 2025 2025-01-01 11:21:55 -05:00
cube Update copyright for 2025 2025-01-01 11:21:55 -05:00
dblink Update copyright for 2025 2025-01-01 11:21:55 -05:00
dict_int Update copyright for 2025 2025-01-01 11:21:55 -05:00
dict_xsyn Update copyright for 2025 2025-01-01 11:21:55 -05:00
earthdistance Update copyright for 2025 2025-01-01 11:21:55 -05:00
file_fdw Add is_analyze parameter to vacuum_delay_point(). 2025-02-11 16:38:14 -06:00
fuzzystrmatch Remove unnecessary (char *) casts [string] 2025-02-12 08:49:18 +01:00
hstore Update copyright for 2025 2025-01-01 11:21:55 -05:00
hstore_plperl Use @extschema:name@ notation in contrib transform modules. 2025-01-09 15:16:56 -05:00
hstore_plpython Use @extschema:name@ notation in contrib transform modules. 2025-01-09 15:16:56 -05:00
intagg Update copyright for 2025 2025-01-01 11:21:55 -05:00
intarray Update copyright for 2025 2025-01-01 11:21:55 -05:00
isn Update copyright for 2025 2025-01-01 11:21:55 -05:00
jsonb_plperl Update copyright for 2025 2025-01-01 11:21:55 -05:00
jsonb_plpython Update copyright for 2025 2025-01-01 11:21:55 -05:00
lo Repair incorrect handling of AfterTriggerSharedData.ats_modifiedcols. 2025-01-22 11:58:20 -05:00
ltree Update copyright for 2025 2025-01-01 11:21:55 -05:00
ltree_plpython Use @extschema:name@ notation in contrib transform modules. 2025-01-09 15:16:56 -05:00
oid2name Update copyright for 2025 2025-01-01 11:21:55 -05:00
pageinspect Remove unnecessary (char *) casts [checksum] 2025-02-12 08:59:48 +01:00
passwordcheck Add passwordcheck.min_password_length. 2025-01-07 15:06:40 -06:00
pg_buffercache Update copyright for 2025 2025-01-01 11:21:55 -05:00
pg_freespacemap pg_freespacemap: Fix declaration of pg_freespace(regclass) 2025-01-08 13:16:43 +09:00
pg_logicalinspect Update copyright for 2025 2025-01-01 11:21:55 -05:00
pg_prewarm Update copyright for 2025 2025-01-01 11:21:55 -05:00
pg_stat_statements Update copyright for 2025 2025-01-01 11:21:55 -05:00
pg_surgery Update copyright for 2025 2025-01-01 11:21:55 -05:00
pg_trgm Remove unnecessary (char *) casts [mem] 2025-02-12 08:50:13 +01:00
pg_visibility Update copyright for 2025 2025-01-01 11:21:55 -05:00
pg_walinspect Update copyright for 2025 2025-01-01 11:21:55 -05:00
pgcrypto Remove support for linking with libeay32 and ssleay32 2025-02-06 20:26:46 +01:00
pgrowlocks Update copyright for 2025 2025-01-01 11:21:55 -05:00
pgstattuple Update copyright for 2025 2025-01-01 11:21:55 -05:00
postgres_fdw Virtual generated columns 2025-02-07 09:46:59 +01:00
seg Update copyright for 2025 2025-01-01 11:21:55 -05:00
sepgsql sepgsql: update TAP test to use fat comma style 2025-02-04 15:51:42 +01:00
spi Update copyright for 2025 2025-01-01 11:21:55 -05:00
sslinfo Remove support for linking with libeay32 and ssleay32 2025-02-06 20:26:46 +01:00
start-scripts Remove gratuitous references to postmaster program 2023-01-26 10:48:32 +01:00
tablefunc Update copyright for 2025 2025-01-01 11:21:55 -05:00
tcn Update copyright for 2025 2025-01-01 11:21:55 -05:00
test_decoding Skip logical decoding of already-aborted transactions. 2025-02-12 16:31:34 -08:00
tsm_system_rows Update copyright for 2025 2025-01-01 11:21:55 -05:00
tsm_system_time Update copyright for 2025 2025-01-01 11:21:55 -05:00
unaccent Update copyright for 2025 2025-01-01 11:21:55 -05:00
uuid-ossp Update copyright for 2025 2025-01-01 11:21:55 -05:00
vacuumlo Update copyright for 2025 2025-01-01 11:21:55 -05:00
xml2 Remove unnecessary (char *) casts [mem] 2025-02-12 08:50:13 +01:00
contrib-global.mk
Makefile Add contrib/pg_logicalinspect. 2024-10-14 17:22:02 -07:00
meson.build Update copyright for 2025 2025-01-01 11:21:55 -05:00
README

The PostgreSQL contrib tree
---------------------------

This subtree contains porting tools, analysis utilities, and plug-in
features that are not part of the core PostgreSQL system, mainly
because they address a limited audience or are too experimental to be
part of the main source tree.  This does not preclude their
usefulness.

User documentation for each module appears in the main SGML
documentation.

When building from the source distribution, these modules are not
built automatically, unless you build the "world" target.  You can
also build and install them all by running "make all" and "make
install" in this directory; or to build and install just one selected
module, do the same in that module's subdirectory.

Some directories supply new user-defined functions, operators, or
types.  To make use of one of these modules, after you have installed
the code you need to register the new SQL objects in the database
system by executing a CREATE EXTENSION command.  In a fresh database,
you can simply do

    CREATE EXTENSION module_name;

See the PostgreSQL documentation for more information about this
procedure.