postgresql/contrib
Tom Lane 899960b9fe Avoid depending on non-POSIX behavior of fcntl(2).
The POSIX standard does not say that the success return value for
fcntl(F_SETFD) and fcntl(F_SETFL) is zero; it says only that it's not -1.
We had several calls that were making the stronger assumption.  Adjust
them to test specifically for -1 for strict spec compliance.

The standard further leaves open the possibility that the O_NONBLOCK
flag bit is not the only active one in F_SETFL's argument.  Formally,
therefore, one ought to get the current flags with F_GETFL and store
them back with only the O_NONBLOCK bit changed when trying to change
the nonblock state.  In port/noblock.c, we were doing the full pushup
in pg_set_block but not in pg_set_noblock, which is just weird.  Make
both of them do it properly, since they have little business making
any assumptions about the socket they're handed.  The other places
where we're issuing F_SETFL are working with FDs we just got from
pipe(2), so it's reasonable to assume the FDs' properties are all
default, so I didn't bother adding F_GETFL steps there.

Also, while pg_set_block deserves some points for trying to do things
right, somebody had decided that it'd be even better to cast fcntl's
third argument to "long".  Which is completely loony, because POSIX
clearly says the third argument for an F_SETFL call is "int".

Given the lack of field complaints, these missteps apparently are not
of significance on any common platforms.  But they're still wrong,
so back-patch to all supported branches.

Discussion: https://postgr.es/m/30882.1492800880@sss.pgh.pa.us
2017-04-21 15:55:56 -04:00
..
adminpack Fix pg_file_write() error handling. 2017-03-12 19:36:15 -04:00
auth_delay Limit values of archive_timeout, post_auth_delay, auth_delay.milliseconds. 2012-11-18 17:15:06 -05:00
auto_explain Fix failure of contrib/auto_explain to print per-node timing information. 2014-09-19 13:19:02 -04:00
btree_gin Make contrib regression tests safe for Danish locale. 2016-07-21 16:52:36 -04:00
btree_gist Ensure plan stability in contrib/btree_gist regression test. 2016-05-12 20:04:41 -04:00
chkpass Fix volatility markings of some contrib I/O functions. 2014-11-05 11:34:19 -05:00
citext Make contrib regression tests safe for Danish locale. 2016-07-21 16:52:36 -04:00
cube Fix typos in comments. 2017-02-06 11:34:28 +02:00
dblink Fix ancient connection leak in dblink 2017-03-11 13:33:22 -08:00
dict_int Fix typos in some error messages thrown by extension scripts when fed to psql. 2014-08-25 18:30:46 +02:00
dict_xsyn Fix typos in some error messages thrown by extension scripts when fed to psql. 2014-08-25 18:30:46 +02:00
dummy_seclabel Update copyrights for 2013 2013-01-01 17:15:01 -05:00
earthdistance Fix typos in comments. 2017-02-06 11:34:28 +02:00
file_fdw Fix contrib/file_fdw's expected file 2015-03-06 11:47:09 -03:00
fuzzystrmatch Add missing va_end() call to a early exit in dmetaphone.c's StringAt(). 2015-01-04 15:35:47 +01:00
hstore Fix IsValidJsonNumber() to notice trailing non-alphanumeric garbage. 2016-02-03 01:39:08 -05:00
intagg Fix typos in some error messages thrown by extension scripts when fed to psql. 2014-08-25 18:30:46 +02:00
intarray Fix -e option in contrib/intarray/bench/bench.pl. 2016-08-17 15:51:10 -04:00
isn Fix typos in comments. 2017-02-06 11:34:28 +02:00
lo Fix typos in some error messages thrown by extension scripts when fed to psql. 2014-08-25 18:30:46 +02:00
ltree Spelling fixes 2017-03-14 13:45:45 -04:00
oid2name Remove tabs after spaces in C comments 2014-05-06 11:26:28 -04:00
pageinspect Remove unused macros. 2016-05-02 10:09:03 +03:00
passwordcheck Update copyrights for 2013 2013-01-01 17:15:01 -05:00
pg_archivecleanup Remove tabs after spaces in C comments 2014-05-06 11:26:28 -04:00
pg_buffercache Fix typos in some error messages thrown by extension scripts when fed to psql. 2014-08-25 18:30:46 +02:00
pg_freespacemap Fix typos in some error messages thrown by extension scripts when fed to psql. 2014-08-25 18:30:46 +02:00
pg_standby Back-patch 9.4-era compiler warning fixes into older branches. 2017-02-17 16:58:59 -05:00
pg_stat_statements Avoid unlikely data-loss scenarios due to rename() without fsync. 2016-03-09 18:53:54 -08:00
pg_test_fsync Avoid depending on non-POSIX behavior of fcntl(2). 2017-04-21 15:55:56 -04:00
pg_test_timing Correctly handle test durations of more than 2147s in pg_test_timing. 2015-01-04 15:53:08 +01:00
pg_trgm Further fix pg_trgm's extraction of trigrams from regular expressions. 2017-04-14 14:52:03 -04:00
pg_upgrade Obstruct shell, SQL, and conninfo injection via database and role names. 2016-08-08 10:07:52 -04:00
pg_upgrade_support Update copyrights for 2013 2013-01-01 17:15:01 -05:00
pg_xlogdump pg_xlogdump: Remove extra newline in error message 2017-03-08 09:59:52 -05:00
pgbench Fix "pg_bench -C -M prepared". 2016-03-16 23:18:07 -04:00
pgcrypto Support OpenSSL 1.1.0 in 9.3 and 9.2. 2017-04-17 13:52:42 -04:00
pgrowlocks Fix handling of multixacts predating pg_upgrade 2016-06-24 18:29:28 -04:00
pgstattuple Remove unused macros. 2016-05-02 10:09:03 +03:00
postgres_fdw Invalidate cached plans on FDW option changes. 2017-01-06 14:12:52 -05:00
seg Fix typos in comments. 2017-02-06 11:34:28 +02:00
sepgsql Silence compiler warning in sepgsql 2017-04-06 14:24:50 -07:00
spi Fix typos in comments. 2017-02-06 11:34:28 +02:00
sslinfo Fix error message wording in previous sslinfo commit 2015-09-08 11:10:20 -03:00
start-scripts Fix typos in comments. 2017-02-06 11:34:28 +02:00
tablefunc Handle unexpected query results, especially NULLs, safely in connectby(). 2015-01-29 20:18:40 -05:00
tcn Remove tabs after spaces in C comments 2014-05-06 11:26:28 -04:00
test_parser Fix typos in some error messages thrown by extension scripts when fed to psql. 2014-08-25 18:30:46 +02:00
tsearch2 Fix typos in comments. 2017-02-06 11:34:28 +02:00
unaccent Fix typos in some error messages thrown by extension scripts when fed to psql. 2014-08-25 18:30:46 +02:00
uuid-ossp Fix typos in some error messages thrown by extension scripts when fed to psql. 2014-08-25 18:30:46 +02:00
vacuumlo pgindent run for release 9.3 2013-05-29 16:58:43 -04:00
worker_spi worker_spi: Call pgstat_report_stat. 2016-09-28 12:40:23 -04:00
xml2 Fix typos in comments. 2017-02-06 11:34:28 +02:00
contrib-global.mk Remove cvs keywords from all files. 2010-09-20 22:08:53 +02:00
Makefile contrib/Makefile also needs updated 2013-02-22 18:56:42 -03:00
README Update contrib/README 2012-04-14 09:29:54 +03: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 "gmake all" and "gmake
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.