postgresql/contrib
Tom Lane 0a20ff54f5 Split up guc.c for better build speed and ease of maintenance.
guc.c has grown to be one of our largest .c files, making it
a bottleneck for compilation.  It's also acquired a bunch of
knowledge that'd be better kept elsewhere, because of our not
very good habit of putting variable-specific check hooks here.
Hence, split it up along these lines:

* guc.c itself retains just the core GUC housekeeping mechanisms.
* New file guc_funcs.c contains the SET/SHOW interfaces and some
  SQL-accessible functions for GUC manipulation.
* New file guc_tables.c contains the data arrays that define the
  built-in GUC variables, along with some already-exported constant
  tables.
* GUC check/assign/show hook functions are moved to the variable's
  home module, whenever that's clearly identifiable.  A few hard-
  to-classify hooks ended up in commands/variable.c, which was
  already a home for miscellaneous GUC hook functions.

To avoid cluttering a lot more header files with #include "guc.h",
I also invented a new header file utils/guc_hooks.h and put all
the GUC hook functions' declarations there, regardless of their
originating module.  That allowed removal of #include "guc.h"
from some existing headers.  The fallout from that (hopefully
all caught here) demonstrates clearly why such inclusions are
best minimized: there are a lot of files that, for example,
were getting array.h at two or more levels of remove, despite
not having any connection at all to GUCs in themselves.

There is some very minor code beautification here, such as
renaming a couple of inconsistently-named hook functions
and improving some comments.  But mostly this just moves
code from point A to point B and deals with the ensuing
needs for #include adjustments and exporting a few functions
that previously weren't exported.

Patch by me, per a suggestion from Andres Freund; thanks also
to Michael Paquier for the idea to invent guc_funcs.c.

Discussion: https://postgr.es/m/587607.1662836699@sss.pgh.pa.us
2022-09-13 11:11:45 -04:00
..
adminpack
amcheck Split up guc.c for better build speed and ease of maintenance. 2022-09-13 11:11:45 -04:00
auth_delay Remove now superfluous declarations of dlsym()ed symbols. 2022-07-17 17:29:32 -07:00
auto_explain Make new auto_explain test safe for log_error_verbosity = verbose. 2022-07-31 12:29:44 -04:00
basebackup_to_shell Move basebackup code to new directory src/backend/backup 2022-08-10 14:03:23 -04:00
basic_archive Tweak detail and hint messages to be consistent with project policy 2022-07-20 09:50:12 +09:00
bloom Remove now superfluous declarations of dlsym()ed symbols. 2022-07-17 17:29:32 -07:00
bool_plperl
btree_gin Fix planner to consider matches to boolean columns in extension indexes. 2022-09-02 17:01:51 -04:00
btree_gist Fix incorrect uses of Datum conversion macros 2022-09-05 13:30:44 +02:00
citext
cube Bump minimum version of Bison to 2.3 2022-09-09 12:31:41 +07:00
dblink Assorted examples of expanded type-safer palloc/pg_malloc API 2022-09-12 08:45:03 +02:00
dict_int
dict_xsyn
earthdistance
file_fdw Add regression test for TRUNCATE on foreign table not supporting TRUNCATE. 2022-07-20 09:35:14 +09:00
fuzzystrmatch
hstore Fix an assortment of improper usages of string functions 2022-09-06 13:19:44 +12:00
hstore_plperl Be more careful to avoid including system headers after perl.h 2022-08-27 14:45:18 +07:00
hstore_plpython Remove now superfluous declarations of dlsym()ed symbols. 2022-07-17 17:29:32 -07:00
intagg
intarray Revert "Convert *GetDatum() and DatumGet*() macros to inline functions" 2022-09-12 19:57:07 +02:00
isn Remove now superfluous declarations of dlsym()ed symbols. 2022-07-17 17:29:32 -07:00
jsonb_plperl Be more careful to avoid including system headers after perl.h 2022-08-27 14:45:18 +07:00
jsonb_plpython Remove now superfluous declarations of dlsym()ed symbols. 2022-07-17 17:29:32 -07:00
lo
ltree Split up guc.c for better build speed and ease of maintenance. 2022-09-13 11:11:45 -04:00
ltree_plpython Remove now superfluous declarations of dlsym()ed symbols. 2022-07-17 17:29:32 -07:00
oid2name
old_snapshot
pageinspect Fix incorrect uses of Datum conversion macros 2022-09-05 13:30:44 +02:00
passwordcheck Remove now superfluous declarations of dlsym()ed symbols. 2022-07-17 17:29:32 -07:00
pg_buffercache Include RelFileLocator fields individually in BufferTag. 2022-08-24 15:50:48 -04:00
pg_freespacemap
pg_prewarm Include RelFileLocator fields individually in BufferTag. 2022-08-24 15:50:48 -04:00
pg_stat_statements Remove dead pread and pwrite replacement code. 2022-08-05 09:49:21 +12:00
pg_surgery Split up guc.c for better build speed and ease of maintenance. 2022-09-13 11:11:45 -04:00
pg_trgm Split up guc.c for better build speed and ease of maintenance. 2022-09-13 11:11:45 -04:00
pg_visibility Replace many MemSet calls with struct initialization 2022-07-16 08:50:49 +02:00
pg_walinspect Use float8 datatype for percentiles in pg_walinspect stat functions 2022-09-12 10:01:00 +02:00
pgcrypto
pgrowlocks Add a regression test for contrib/pgrowlocks. 2022-09-01 15:02:41 -04:00
pgstattuple pgstattuple: Use double consistently for percentages 2022-09-12 10:19:17 +02:00
postgres_fdw postgres_fdw: Disable batch insertion when there are WCO constraints. 2022-08-05 17:15:00 +09:00
seg Bump minimum version of Bison to 2.3 2022-09-09 12:31:41 +07:00
sepgsql Fix an assortment of improper usages of string functions 2022-09-06 13:19:44 +12:00
spi
sslinfo
start-scripts
tablefunc
tcn Use --load-extension to set up for contrib/tcn's isolation tests. 2022-09-01 14:30:41 -04:00
test_decoding Fix the incorrect assertion introduced in commit 7f13ac8123. 2022-08-29 08:10:10 +05:30
tsm_system_rows
tsm_system_time
unaccent
uuid-ossp Reject bogus output from uuid_create(3). 2022-09-09 12:41:36 -04:00
vacuumlo Remove unneeded null pointer checks before PQfreemem() 2022-08-26 19:16:28 +02:00
xml2
contrib-global.mk
Makefile
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.