postgresql/contrib
Peter Geoghegan 9dc718bdf2 Pass down "logically unchanged index" hint.
Add an executor aminsert() hint mechanism that informs index AMs that
the incoming index tuple (the tuple that accompanies the hint) is not
being inserted by execution of an SQL statement that logically modifies
any of the index's key columns.

The hint is received by indexes when an UPDATE takes place that does not
apply an optimization like heapam's HOT (though only for indexes where
all key columns are logically unchanged).  Any index tuple that receives
the hint on insert is expected to be a duplicate of at least one
existing older version that is needed for the same logical row.  Related
versions will typically be stored on the same index page, at least
within index AMs that apply the hint.

Recognizing the difference between MVCC version churn duplicates and
true logical row duplicates at the index AM level can help with cleanup
of garbage index tuples.  Cleanup can intelligently target tuples that
are likely to be garbage, without wasting too many cycles on less
promising tuples/pages (index pages with little or no version churn).

This is infrastructure for an upcoming commit that will teach nbtree to
perform bottom-up index deletion.  No index AM actually applies the hint
just yet.

Author: Peter Geoghegan <pg@bowt.ie>
Reviewed-By: Victor Yegorov <vyegorov@gmail.com>
Discussion: https://postgr.es/m/CAH2-Wz=CEKFa74EScx_hFVshCOn6AA5T-ajFASTdzipdkLTNQQ@mail.gmail.com
2021-01-13 08:11:00 -08:00
..
adminpack Update copyright for 2021 2021-01-02 13:06:25 -05:00
amcheck Update copyright for 2021 2021-01-02 13:06:25 -05:00
auth_delay Update copyright for 2021 2021-01-02 13:06:25 -05:00
auto_explain Update copyright for 2021 2021-01-02 13:06:25 -05:00
bloom Pass down "logically unchanged index" hint. 2021-01-13 08:11:00 -08:00
bool_plperl
btree_gin
btree_gist Expose internal function for converting int64 to numeric 2020-09-09 20:16:28 +02:00
citext Make contrib modules' installation scripts more secure. 2020-08-10 10:44:42 -04:00
cube Make contrib modules' installation scripts more secure. 2020-08-10 10:44:42 -04:00
dblink Update copyright for 2021 2021-01-02 13:06:25 -05:00
dict_int Update copyright for 2021 2021-01-02 13:06:25 -05:00
dict_xsyn Update copyright for 2021 2021-01-02 13:06:25 -05:00
earthdistance Make contrib modules' installation scripts more secure. 2020-08-10 10:44:42 -04:00
file_fdw Update copyright for 2021 2021-01-02 13:06:25 -05:00
fuzzystrmatch Update copyright for 2021 2021-01-02 13:06:25 -05:00
hstore Re-implement pl/pgsql's expression and assignment parsing. 2021-01-04 11:52:00 -05:00
hstore_plperl Make contrib modules' installation scripts more secure. 2020-08-10 10:44:42 -04:00
hstore_plpython
intagg Make contrib modules' installation scripts more secure. 2020-08-10 10:44:42 -04:00
intarray Update copyright for 2021 2021-01-02 13:06:25 -05:00
isn Update copyright for 2021 2021-01-02 13:06:25 -05:00
jsonb_plperl Expose internal function for converting int64 to numeric 2020-09-09 20:16:28 +02:00
jsonb_plpython
lo
ltree Make contrib modules' installation scripts more secure. 2020-08-10 10:44:42 -04:00
ltree_plpython
oid2name Remove arbitrary restrictions on password length. 2020-09-03 20:09:18 -04:00
old_snapshot Update copyright for 2021 2021-01-02 13:06:25 -05:00
pageinspect Fix portability issues in the new gist pageinspect test. 2021-01-13 12:32:54 +02:00
passwordcheck Update copyright for 2021 2021-01-02 13:06:25 -05:00
pg_buffercache
pg_freespacemap
pg_prewarm Update copyright for 2021 2021-01-02 13:06:25 -05:00
pg_standby
pg_stat_statements Update copyright for 2021 2021-01-02 13:06:25 -05:00
pg_surgery Update copyright for 2021 2021-01-02 13:06:25 -05:00
pg_trgm Update copyright for 2021 2021-01-02 13:06:25 -05:00
pg_visibility Update copyright for 2021 2021-01-02 13:06:25 -05:00
pgcrypto Fix and simplify some code related to cryptohashes 2021-01-08 10:37:03 +09:00
pgrowlocks
pgstattuple Update copyright for 2021 2021-01-02 13:06:25 -05:00
postgres_fdw Replace remaining uses of "whitelist". 2021-01-05 14:00:16 +13:00
seg Make contrib modules' installation scripts more secure. 2020-08-10 10:44:42 -04:00
sepgsql Update copyright for 2021 2021-01-02 13:06:25 -05:00
spi
sslinfo Use be_tls_* API for SSL information in sslinfo 2020-11-03 09:47:36 +01:00
start-scripts
tablefunc Update copyright for 2021 2021-01-02 13:06:25 -05:00
tcn Update copyright for 2021 2021-01-02 13:06:25 -05:00
test_decoding Fix the test for decoding of two-phase transactions. 2021-01-09 15:45:38 +05:30
tsm_system_rows Update copyright for 2021 2021-01-02 13:06:25 -05:00
tsm_system_time Update copyright for 2021 2021-01-02 13:06:25 -05:00
unaccent Update copyright for 2021 2021-01-02 13:06:25 -05:00
uuid-ossp Update copyright for 2021 2021-01-02 13:06:25 -05:00
vacuumlo Update copyright for 2021 2021-01-02 13:06:25 -05:00
xml2
contrib-global.mk
Makefile Add new 'old_snapshot' contrib module. 2020-09-24 13:55:47 -04: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.