postgresql/contrib
Andres Freund 4c850ecec6 Don't include heapam.h from others headers.
heapam.h previously was included in a number of widely used
headers (e.g. execnodes.h, indirectly in executor.h, ...). That's
problematic on its own, as heapam.h contains a lot of low-level
details that don't need to be exposed that widely, but becomes more
problematic with the upcoming introduction of pluggable table storage
- it seems inappropriate for heapam.h to be included that widely
afterwards.

heapam.h was largely only included in other headers to get the
HeapScanDesc typedef (which was defined in heapam.h, even though
HeapScanDescData is defined in relscan.h). The better solution here
seems to be to just use the underlying struct (forward declared where
necessary). Similar for BulkInsertState.

Another problem was that LockTupleMode was used in executor.h - parts
of the file tried to cope without heapam.h, but due to the fact that
it indirectly included it, several subsequent violations of that goal
were not not noticed. We could just reuse the approach of declaring
parameters as int, but it seems nicer to move LockTupleMode to
lockoptions.h - that's not a perfect location, but also doesn't seem
bad.

As a number of files relied on implicitly included heapam.h, a
significant number of files grew an explicit include. It's quite
probably that a few external projects will need to do the same.

Author: Andres Freund
Reviewed-By: Alvaro Herrera
Discussion: https://postgr.es/m/20190114000701.y4ttcb74jpskkcfb@alap3.anarazel.de
2019-01-14 16:24:41 -08:00
..
adminpack Update copyright for 2019 2019-01-02 12:44:25 -05:00
amcheck Don't include heapam.h from others headers. 2019-01-14 16:24:41 -08:00
auth_delay Update copyright for 2019 2019-01-02 12:44:25 -05:00
auto_explain Update copyright for 2019 2019-01-02 12:44:25 -05:00
bloom Update copyright for 2019 2019-01-02 12:44:25 -05:00
btree_gin Provide separate header file for built-in float types 2018-07-29 03:30:48 +02:00
btree_gist Remove WITH OIDS support, change oid catalog column visibility. 2018-11-20 16:00:17 -08:00
citext Add a 64-bit hash function for type citext. 2018-11-23 13:24:45 -05:00
cube Make float exponent output on Windows look the same as elsewhere. 2018-10-12 11:14:27 -04:00
dblink Don't include heapam.h from others headers. 2019-01-14 16:24:41 -08:00
dict_int Update copyright for 2019 2019-01-02 12:44:25 -05:00
dict_xsyn Update copyright for 2019 2019-01-02 12:44:25 -05:00
earthdistance Fix earthdistance test suite function name typo. 2018-07-29 12:02:07 -07:00
file_fdw Don't include heapam.h from others headers. 2019-01-14 16:24:41 -08:00
fuzzystrmatch Update copyright for 2019 2019-01-02 12:44:25 -05:00
hstore Fix hstore hash function for empty hstores upgraded from 8.4. 2018-11-24 09:59:49 +00:00
hstore_plperl Still further rethinking of build changes for macOS Mojave. 2018-10-18 14:55:23 -04:00
hstore_plpython Fix out-of-tree build for transform modules. 2018-09-16 18:46:45 +01:00
intagg Schema-qualify some references to regprocedure. 2016-06-10 10:41:58 -04:00
intarray Update copyright for 2019 2019-01-02 12:44:25 -05:00
isn Update copyright for 2019 2019-01-02 12:44:25 -05:00
jsonb_plperl Still further rethinking of build changes for macOS Mojave. 2018-10-18 14:55:23 -04:00
jsonb_plpython Remove redundant allocation 2018-10-05 17:10:58 +02:00
lo lo: Add test suite 2017-09-14 22:22:59 -04:00
ltree Allow btree comparison functions to return INT_MIN. 2018-10-05 16:01:29 -04:00
ltree_plpython Fix out-of-tree build for transform modules. 2018-09-16 18:46:45 +01:00
oid2name Add PGXS options to control TAP and isolation tests, take two 2018-12-03 09:27:35 +09:00
pageinspect Don't include heapam.h from others headers. 2019-01-14 16:24:41 -08:00
passwordcheck Update copyright for 2019 2019-01-02 12:44:25 -05:00
pg_buffercache Remove WITH OIDS support, change oid catalog column visibility. 2018-11-20 16:00:17 -08:00
pg_freespacemap Don't include heapam.h from others headers. 2019-01-14 16:24:41 -08:00
pg_prewarm Update copyright for 2019 2019-01-02 12:44:25 -05:00
pg_standby Integrate recovery.conf into postgresql.conf 2018-11-25 16:33:40 +01:00
pg_stat_statements Extend pg_stat_statements_reset to reset statistics specific to a 2019-01-11 08:50:09 +05:30
pg_trgm Update copyright for 2019 2019-01-02 12:44:25 -05:00
pg_visibility Don't include heapam.h from others headers. 2019-01-14 16:24:41 -08:00
pgcrypto Remove configure switch --disable-strong-random 2019-01-01 20:05:51 +09:00
pgrowlocks Don't include heapam.h from others headers. 2019-01-14 16:24:41 -08:00
pgstattuple Don't include heapam.h from others headers. 2019-01-14 16:24:41 -08:00
postgres_fdw Don't include heapam.h from others headers. 2019-01-14 16:24:41 -08:00
seg Make float exponent output on Windows look the same as elsewhere. 2018-10-12 11:14:27 -04:00
sepgsql Update copyright for 2019 2019-01-02 12:44:25 -05:00
spi Remove timetravel extension. 2018-10-11 11:43:56 -07:00
sslinfo Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
start-scripts Remove contrib/start-scripts/osx/. 2017-11-17 12:53:20 -05:00
tablefunc Update copyright for 2019 2019-01-02 12:44:25 -05:00
tcn Update copyright for 2019 2019-01-02 12:44:25 -05:00
test_decoding Update copyright for 2019 2019-01-02 12:44:25 -05:00
tsm_system_rows Don't include heapam.h from others headers. 2019-01-14 16:24:41 -08:00
tsm_system_time Don't include heapam.h from others headers. 2019-01-14 16:24:41 -08:00
unaccent Update unaccent rules with release 34 of CLDR for Latin-ASCII.xml 2019-01-10 14:10:21 +09:00
uuid-ossp Update copyright for 2019 2019-01-02 12:44:25 -05:00
vacuumlo Update copyright for 2019 2019-01-02 12:44:25 -05:00
xml2 Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
Makefile Transforms for jsonb to PL/Perl 2018-04-03 09:47:18 -04: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.