postgresql/contrib
Heikki Linnakangas 50c67c2019 Use ResourceOwner to track WaitEventSets.
A WaitEventSet holds file descriptors or event handles (on Windows).
If FreeWaitEventSet is not called, those fds or handles are leaked.
Use ResourceOwners to track WaitEventSets, to clean those up
automatically on error.

This was a live bug in async Append nodes, if a FDW's
ForeignAsyncRequest function failed. (In back branches, I will apply a
more localized fix for that based on PG_TRY-PG_FINALLY.)

The added test doesn't check for leaking resources, so it passed even
before this commit. But at least it covers the code path.

In the passing, fix misleading comment on what the 'nevents' argument
to WaitEventSetWait means.

Report by Alexander Lakhin, analysis and suggestion for the fix by
Tom Lane. Fixes bug #17828.

Reviewed-by: Alexander Lakhin, Thomas Munro
Discussion: https://www.postgresql.org/message-id/472235.1678387869@sss.pgh.pa.us
2023-11-23 13:31:36 +02:00
..
adminpack Use "data directory" not "current directory" in error messages. 2023-03-16 12:04:08 -04:00
amcheck amcheck: Distinguish interrupted page deletion from corruption. 2023-10-30 14:46:05 -07:00
auth_delay Fix copy-pasto in contrib/auth_delay/meson.build variable name. 2023-04-02 09:31:10 -07:00
auto_explain Pre-beta mechanical code beautification. 2023-05-19 17:24:48 -04:00
basebackup_to_shell Pre-beta mechanical code beautification. 2023-05-19 17:24:48 -04:00
basic_archive Pre-beta mechanical code beautification. 2023-05-19 17:24:48 -04:00
bloom Remove the "snapshot too old" feature. 2023-09-05 19:53:43 +12:00
bool_plperl Update copyright for 2023 2023-01-02 15:00:37 -05:00
btree_gin Support +/- infinity in the interval data type. 2023-11-14 10:58:49 +00:00
btree_gist Add trailing commas to enum definitions 2023-10-26 09:20:54 +02:00
citext citext: Allow tests to pass in OpenSSL FIPS mode 2023-11-07 07:58:14 +01:00
cube Remove distprep 2023-11-06 15:18:04 +01:00
dblink dblink: Replace WAIT_EVENT_EXTENSION with custom wait events 2023-10-05 10:23:22 +09:00
dict_int Update copyright for 2023 2023-01-02 15:00:37 -05:00
dict_xsyn Update copyright for 2023 2023-01-02 15:00:37 -05:00
earthdistance Doc: improve commentary about providing our own definitions of M_PI. 2023-01-08 16:25:33 -05:00
file_fdw Adjust file_fdw regression tests for acc95f29ef FREEZE commit 2023-11-13 14:44:39 -05:00
fuzzystrmatch Remove distprep 2023-11-06 15:18:04 +01:00
hstore Constify crc32_sz 2023-10-05 08:53:21 +02:00
hstore_plperl Update copyright for 2023 2023-01-02 15:00:37 -05:00
hstore_plpython In hstore_plpython, avoid crashing when return value isn't a mapping. 2023-04-27 11:55:06 -04:00
intagg Update copyright for 2023 2023-01-02 15:00:37 -05:00
intarray Fix another bug in parent page splitting during GiST index build. 2023-09-26 14:14:49 +03:00
isn Rework pg_input_error_message(), now renamed pg_input_error_info() 2023-02-28 08:04:13 +09:00
jsonb_plperl Update copyright for 2023 2023-01-02 15:00:37 -05:00
jsonb_plpython Update copyright for 2023 2023-01-02 15:00:37 -05:00
lo Update copyright for 2023 2023-01-02 15:00:37 -05:00
ltree Pre-beta mechanical code beautification. 2023-05-19 17:24:48 -04:00
ltree_plpython Update copyright for 2023 2023-01-02 15:00:37 -05:00
oid2name Mark options as deprecated in usage output 2023-03-02 14:36:37 +01:00
pageinspect pageinspect: Fix gist_page_items() with included columns 2023-05-19 12:37:58 +09:00
passwordcheck Allow tests to pass in OpenSSL FIPS mode (rest) 2023-11-17 17:58:39 +01:00
pg_buffercache Add pg_buffercache_usage_counts() to contrib/pg_buffercache. 2023-04-07 14:25:53 -04:00
pg_freespacemap Update copyright for 2023 2023-01-02 15:00:37 -05:00
pg_prewarm Add trailing commas to enum definitions 2023-10-26 09:20:54 +02:00
pg_stat_statements pg_stat_statements: Remove duplicated tests for SET statements 2023-11-09 10:04:31 +09:00
pg_surgery Add trailing commas to enum definitions 2023-10-26 09:20:54 +02:00
pg_trgm Update contrib/trgm_regexp's memory management. 2023-04-08 22:09:17 +12:00
pg_visibility Update copyright for 2023 2023-01-02 15:00:37 -05:00
pg_walinspect During online checkpoints, insert XLOG_CHECKPOINT_REDO at redo point. 2023-10-19 14:47:29 -04:00
pgcrypto pgcrypto: Allow tests to pass in OpenSSL FIPS mode 2023-11-17 14:55:51 +01:00
pgrowlocks Adjust the order of the prechecks in pgrowlocks() 2023-10-31 16:42:08 +13:00
pgstattuple Diagnose !indisvalid in more SQL functions. 2023-10-30 14:46:05 -07:00
postgres_fdw Use ResourceOwner to track WaitEventSets. 2023-11-23 13:31:36 +02:00
seg Remove distprep 2023-11-06 15:18:04 +01:00
sepgsql meson: Fix missing dependency from install-quiet to sepgsql.sql 2023-11-17 16:29:48 -08:00
spi meson: Install missing example files 2023-11-09 15:10:43 +01:00
sslinfo Revert "Add notBefore and notAfter to SSL cert info display" 2023-07-20 17:18:12 +02:00
start-scripts Remove gratuitous references to postmaster program 2023-01-26 10:48:32 +01:00
tablefunc Update copyright for 2023 2023-01-02 15:00:37 -05:00
tcn Update copyright for 2023 2023-01-02 15:00:37 -05:00
test_decoding Add STREAM_START/STREAM_STOP for transactional messages during decoding. 2023-10-30 14:36:21 +05:30
tsm_system_rows Update copyright for 2023 2023-01-02 15:00:37 -05:00
tsm_system_time Update copyright for 2023 2023-01-02 15:00:37 -05:00
unaccent unaccent: Tweak value of PYTHON when building without Python support 2023-09-27 14:40:23 +09:00
uuid-ossp Allow tests to pass in OpenSSL FIPS mode (rest) 2023-11-17 17:58:39 +01:00
vacuumlo Add trailing commas to enum definitions 2023-10-26 09:20:54 +02:00
xml2 Update copyright for 2023 2023-01-02 15:00:37 -05:00
contrib-global.mk Respect TEMP_CONFIG when pg_regress_check and friends are called 2016-02-27 12:28:21 -05:00
Makefile Remove the "snapshot too old" feature. 2023-09-05 19:53:43 +12:00
meson.build meson: Install missing example files 2023-11-09 15:10:43 +01:00
README Rename 'gmake' to 'make' in docs and recommended commands 2014-02-12 17:29:19 -05:00

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.