postgresql/contrib
Robert Haas fc267a0c3c postgres_fdw: Allow cancellation of transaction control commands.
Commit f039eaac71, later back-patched
with commit 1b812afb0e, allowed many of
the queries issued by postgres_fdw to fetch remote data to respond to
cancel interrupts in a timely fashion.  However, it didn't do anything
about the transaction control commands, which remained
noninterruptible.

Improve the situation by changing do_sql_command() to retrieve query
results using pgfdw_get_result(), which uses the asynchronous
interface to libpq so that it can check for interrupts every time
libpq returns control.  Since this might result in a situation
where we can no longer be sure that the remote transaction state
matches the local transaction state, add a facility to force all
levels of the local transaction to abort if we've lost track of
the remote state; without this, an apparently-successful commit of
the local transaction might fail to commit changes made on the
remote side.  Also, add a 60-second timeout for queries issue during
transaction abort; if that expires, give up and mark the state of
the connection as unknown.  Drop all such connections when we exit
the local transaction.  Together, these changes mean that if we're
aborting the local toplevel transaction anyway, we can just drop the
remote connection in lieu of waiting (possibly for a very long time)
for it to complete an abort.

This still leaves quite a bit of room for improvement.  PQcancel()
has no asynchronous interface, so if we get stuck sending the cancel
request we'll still hang.  Also, PQsetnonblocking() is not used, which
means we could block uninterruptibly when sending a query.  There
might be some other optimizations possible as well.  Nonetheless,
this allows us to escape a wait for an unresponsive remote server
quickly in many more cases than previously.

Report by Suraj Kharage.  Patch by me and Rafia Sabih.  Review
and testing by Amit Kapila and Tushar Ahuja.

Discussion: http://postgr.es/m/CAF1DzPU8Kx+fMXEbFoP289xtm3bz3t+ZfxhmKavr98Bh-C0TqQ@mail.gmail.com
2017-06-07 15:41:05 -04:00
..
adminpack Fix pg_file_write() error handling. 2017-03-12 19:36:15 -04:00
auth_delay
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
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
pageinspect Remove unused macros. 2016-05-02 10:09:03 +03:00
passwordcheck
pg_archivecleanup Fix new warnings from GCC 7 2017-05-15 13:31:38 -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 Fix new warnings from GCC 7 2017-05-15 13:31:38 -04: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 Fix new warnings from GCC 7 2017-05-15 13:31:38 -04:00
pg_upgrade_support
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 postgres_fdw: Allow cancellation of transaction control commands. 2017-06-07 15:41:05 -04: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
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
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
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 "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.