postgresql/contrib
Alexander Korotkov 911e702077 Implement operator class parameters
PostgreSQL provides set of template index access methods, where opclasses have
much freedom in the semantics of indexing.  These index AMs are GiST, GIN,
SP-GiST and BRIN.  There opclasses define representation of keys, operations on
them and supported search strategies.  So, it's natural that opclasses may be
faced some tradeoffs, which require user-side decision.  This commit implements
opclass parameters allowing users to set some values, which tell opclass how to
index the particular dataset.

This commit doesn't introduce new storage in system catalog.  Instead it uses
pg_attribute.attoptions, which is used for table column storage options but
unused for index attributes.

In order to evade changing signature of each opclass support function, we
implement unified way to pass options to opclass support functions.  Options
are set to fn_expr as the constant bytea expression.  It's possible due to the
fact that opclass support functions are executed outside of expressions, so
fn_expr is unused for them.

This commit comes with some examples of opclass options usage.  We parametrize
signature length in GiST.  That applies to multiple opclasses: tsvector_ops,
gist__intbig_ops, gist_ltree_ops, gist__ltree_ops, gist_trgm_ops and
gist_hstore_ops.  Also we parametrize maximum number of integer ranges for
gist__int_ops.  However, the main future usage of this feature is expected
to be json, where users would be able to specify which way to index particular
json parts.

Catversion is bumped.

Discussion: https://postgr.es/m/d22c3a18-31c7-1879-fc11-4c1ce2f5e5af%40postgrespro.ru
Author: Nikita Glukhov, revised by me
Reviwed-by: Nikolay Shaplov, Robert Haas, Tom Lane, Tomas Vondra, Alvaro Herrera
2020-03-30 19:17:23 +03:00
..
adminpack Add missing errcode() in a few ereport calls. 2020-03-18 09:27:14 +05:30
amcheck Improve checking of child pages in contrib/amcheck. 2020-03-11 12:00:31 +03:00
auth_delay Update copyrights for 2020 2020-01-01 12:21:45 -05:00
auto_explain Update copyrights for 2020 2020-01-01 12:21:45 -05:00
bloom Implement operator class parameters 2020-03-30 19:17:23 +03:00
bool_plperl Create contrib/bool_plperl to provide a bool transform for PL/Perl[U]. 2020-03-06 17:11:23 -05:00
btree_gin Remove support for upgrading extensions from "unpackaged" state. 2020-02-19 16:59:14 -05:00
btree_gist Remove support for upgrading extensions from "unpackaged" state. 2020-02-19 16:59:14 -05:00
citext Move src/backend/utils/hash/hashfn.c to src/common 2020-02-27 09:25:41 +05:30
cube Remove support for upgrading extensions from "unpackaged" state. 2020-02-19 16:59:14 -05:00
dblink Fix compile failure. 2020-02-24 18:43:40 -05:00
dict_int Preserve integer and float values accurately in (de)serialize_deflist. 2020-03-10 12:30:02 -04:00
dict_xsyn Remove support for upgrading extensions from "unpackaged" state. 2020-02-19 16:59:14 -05:00
earthdistance Remove support for upgrading extensions from "unpackaged" state. 2020-02-19 16:59:14 -05:00
file_fdw Remove utils/acl.h from catalog/objectaddress.h 2020-03-10 10:27:00 +01:00
fuzzystrmatch Remove support for upgrading extensions from "unpackaged" state. 2020-02-19 16:59:14 -05:00
hstore Implement operator class parameters 2020-03-30 19:17:23 +03:00
hstore_plperl Mark some contrib modules as "trusted". 2020-02-13 15:02:35 -05:00
hstore_plpython Split all OBJS style lines in makefiles into one-line-per-entry style. 2019-11-05 14:41:07 -08:00
intagg Remove support for upgrading extensions from "unpackaged" state. 2020-02-19 16:59:14 -05:00
intarray Implement operator class parameters 2020-03-30 19:17:23 +03:00
isn Remove support for upgrading extensions from "unpackaged" state. 2020-02-19 16:59:14 -05:00
jsonb_plperl Mark some contrib modules as "trusted". 2020-02-13 15:02:35 -05:00
jsonb_plpython In jsonb_plpython.c, suppress warning message from gcc 10. 2020-01-30 18:26:12 -05:00
lo Add tg_updatedcols to TriggerData 2020-03-09 09:34:55 +01:00
ltree Implement operator class parameters 2020-03-30 19:17:23 +03:00
ltree_plpython Split all OBJS style lines in makefiles into one-line-per-entry style. 2019-11-05 14:41:07 -08:00
oid2name Add PostgreSQL home page to --help output 2020-02-28 13:12:21 +01:00
pageinspect Remove useless pfree()s at the ends of various ValuePerCall SRFs. 2020-03-16 21:36:53 -04:00
passwordcheck Update copyrights for 2020 2020-01-01 12:21:45 -05:00
pg_buffercache Remove support for upgrading extensions from "unpackaged" state. 2020-02-19 16:59:14 -05:00
pg_freespacemap Remove support for upgrading extensions from "unpackaged" state. 2020-02-19 16:59:14 -05:00
pg_prewarm Remove excess parens in ereport() calls 2020-01-30 13:32:04 -03:00
pg_standby pg_standby: Don't use HAVE_WORKING_LINK 2020-03-03 08:54:44 +01:00
pg_stat_statements Expose BufferUsageAccumDiff(). 2020-03-30 12:15:26 +09:00
pg_trgm Implement operator class parameters 2020-03-30 19:17:23 +03:00
pg_visibility Revert "Skip WAL for new relfilenodes, under wal_level=minimal." 2020-03-22 09:24:09 -07:00
pgcrypto Introduce macros for typalign and typstorage constants. 2020-03-04 10:34:25 -05:00
pgrowlocks Avoid holding a directory FD open across assorted SRF calls. 2020-03-16 21:05:52 -04:00
pgstattuple Remove support for upgrading extensions from "unpackaged" state. 2020-02-19 16:59:14 -05:00
postgres_fdw Fix compile failure. 2020-02-24 18:43:40 -05:00
seg Remove support for upgrading extensions from "unpackaged" state. 2020-02-19 16:59:14 -05:00
sepgsql Represent command completion tags as structs 2020-03-02 18:19:51 -03:00
spi Remove support for upgrading extensions from "unpackaged" state. 2020-02-19 16:59:14 -05:00
sslinfo Remove support for upgrading extensions from "unpackaged" state. 2020-02-19 16:59:14 -05:00
start-scripts Remove contrib/start-scripts/osx/. 2017-11-17 12:53:20 -05:00
tablefunc Remove support for upgrading extensions from "unpackaged" state. 2020-02-19 16:59:14 -05:00
tcn Mark some contrib modules as "trusted". 2020-02-13 15:02:35 -05:00
test_decoding Stop demanding that top xact must be seen before subxact in decoding. 2020-02-19 08:15:49 +05:30
tsm_system_rows Mark some contrib modules as "trusted". 2020-02-13 15:02:35 -05:00
tsm_system_time Mark some contrib modules as "trusted". 2020-02-13 15:02:35 -05:00
unaccent Remove support for upgrading extensions from "unpackaged" state. 2020-02-19 16:59:14 -05:00
uuid-ossp Remove support for upgrading extensions from "unpackaged" state. 2020-02-19 16:59:14 -05:00
vacuumlo Add PostgreSQL home page to --help output 2020-02-28 13:12:21 +01:00
xml2 Remove support for upgrading extensions from "unpackaged" state. 2020-02-19 16:59:14 -05:00
Makefile Create contrib/bool_plperl to provide a bool transform for PL/Perl[U]. 2020-03-06 17:11:23 -05:00
README Rename 'gmake' to 'make' in docs and recommended commands 2014-02-12 17:29:19 -05:00
contrib-global.mk Respect TEMP_CONFIG when pg_regress_check and friends are called 2016-02-27 12:28:21 -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.