postgresql/contrib
Etsuro Fujita 08d2d58a2a postgres_fdw: Fix costing of pre-sorted foreign paths with local stats.
Commit aa09cd242 modified estimate_path_cost_size() so that it reuses
cached costs of a basic foreign path for a given foreign-base/join
relation when costing pre-sorted foreign paths for that relation, but it
incorrectly re-computed retrieved_rows, an estimated number of rows
fetched from the remote side, which is needed for costing both the basic
and pre-sorted foreign paths.  To fix, handle retrieved_rows the same way
as the cached costs: store in that relation's fpinfo the retrieved_rows
estimate computed for costing the basic foreign path, and reuse it when
costing the pre-sorted foreign paths.  Also, reuse the rows/width
estimates stored in that relation's fpinfo when costing the pre-sorted
foreign paths, to make the code consistent.

In commit ffab494a4, to extend the costing mentioned above to the
foreign-grouping case, I made a change to add_foreign_grouping_paths() to
store in a given foreign-grouped relation's RelOptInfo the rows estimate
for that relation for reuse, but this patch makes that change unnecessary
since we already store the row estimate in that relation's fpinfo, which
this patch reuses when costing a foreign path for that relation with the
sortClause ordering; remove that change.

In passing, fix thinko in commit 7012b132d: in estimate_path_cost_size(),
the width estimate for a given foreign-grouped relation to be stored in
that relation's fpinfo was reset incorrectly when costing a basic foreign
path for that relation with local stats.

Apply the patch to HEAD only to avoid destabilizing existing plan choices.

Author: Etsuro Fujita
Discussion: https://postgr.es/m/CAPmGK17jaJLPDEkgnP2VmkOg=5wT8YQ1CqssU8JRpZ_NSE+dqQ@mail.gmail.com
2019-06-14 20:49:59 +09:00
..
adminpack Update copyright for 2019 2019-01-02 12:44:25 -05:00
amcheck Phase 2 pgindent run for v12. 2019-05-22 13:04:48 -04:00
auth_delay Update copyright for 2019 2019-01-02 12:44:25 -05:00
auto_explain Fix contrib/auto_explain to not cause problems in parallel workers. 2019-06-03 18:06:04 -04:00
bloom Phase 2 pgindent run for v12. 2019-05-22 13:04:48 -04:00
btree_gin Provide separate header file for built-in float types 2018-07-29 03:30:48 +02:00
btree_gist Phase 2 pgindent run for v12. 2019-05-22 13:04:48 -04:00
citext Fix typos in various places 2019-06-03 13:44:03 +09:00
cube Initial pgindent run for v12. 2019-05-22 12:55:34 -04:00
dblink Phase 2 pgindent run for v12. 2019-05-22 13:04:48 -04: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 Phase 2 pgindent run for v12. 2019-05-22 13:04:48 -04:00
fuzzystrmatch Update copyright for 2019 2019-01-02 12:44:25 -05:00
hstore Move hash_any prototype from access/hash.h to utils/hashutils.h 2019-03-11 13:17:50 -03:00
hstore_plperl Clean up PL/Perl's handling of the _() macro. 2019-06-02 12:23:39 -04:00
hstore_plpython Avoid Python memory leaks in hstore_plpython and jsonb_plpython. 2019-04-06 17:54:29 -04:00
intagg Schema-qualify some references to regprocedure. 2016-06-10 10:41:58 -04:00
intarray Phase 2 pgindent run for v12. 2019-05-22 13:04:48 -04:00
isn Update copyright for 2019 2019-01-02 12:44:25 -05:00
jsonb_plperl Clean up PL/Perl's handling of the _() macro. 2019-06-02 12:23:39 -04:00
jsonb_plpython Phase 2 pgindent run for v12. 2019-05-22 13:04:48 -04:00
lo lo: Add test suite 2017-09-14 22:22:59 -04:00
ltree Phase 2 pgindent run for v12. 2019-05-22 13:04:48 -04:00
ltree_plpython Fix out-of-tree build for transform modules. 2018-09-16 18:46:45 +01:00
oid2name Replace @postgresql.org with @lists.postgresql.org for mailinglists 2019-01-19 19:06:35 +01:00
pageinspect Phase 2 pgindent run for v12. 2019-05-22 13:04:48 -04: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 Replace heapam.h includes with {table, relation}.h where applicable. 2019-01-21 10:51:37 -08:00
pg_prewarm Don't auto-restart per-database autoprewarm workers. 2019-03-18 15:22:42 -04:00
pg_standby Replace @postgresql.org with @lists.postgresql.org for mailinglists 2019-01-19 19:06:35 +01:00
pg_stat_statements Phase 2 pgindent run for v12. 2019-05-22 13:04:48 -04:00
pg_trgm Fix operator naming in pg_trgm GUC option descriptions 2019-06-10 20:14:19 +03:00
pg_visibility Phase 2 pgindent run for v12. 2019-05-22 13:04:48 -04:00
pgcrypto Fix typos in SQL scripts of pgcrypto 2019-05-28 06:33:30 -04:00
pgrowlocks Only allow heap in a number of contrib modules. 2019-04-01 14:57:21 -07:00
pgstattuple Phase 2 pgindent run for v12. 2019-05-22 13:04:48 -04:00
postgres_fdw postgres_fdw: Fix costing of pre-sorted foreign paths with local stats. 2019-06-14 20:49:59 +09:00
seg Change floating-point output format for improved performance. 2019-02-13 15:20:33 +00:00
sepgsql Phase 2 pgindent run for v12. 2019-05-22 13:04:48 -04:00
spi Fix more strcmp() calls using boolean-like comparisons for result checks 2019-04-12 10:16:49 +09: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 Phase 2 pgindent run for v12. 2019-05-22 13:04:48 -04:00
tcn Update copyright for 2019 2019-01-02 12:44:25 -05:00
test_decoding Stop using spelling "nonexistant". 2019-06-08 10:12:26 -07:00
tsm_system_rows Phase 2 pgindent run for v12. 2019-05-22 13:04:48 -04:00
tsm_system_time Phase 2 pgindent run for v12. 2019-05-22 13:04:48 -04:00
unaccent Add combining characters to unaccent.rules. 2019-02-01 15:23:01 +01:00
uuid-ossp Update copyright for 2019 2019-01-02 12:44:25 -05:00
vacuumlo Fix copy-pasto in freeing memory on error in vacuumlo. 2019-06-07 12:42:27 +03:00
xml2 Phase 2 pgindent run for v12. 2019-05-22 13:04:48 -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.