postgres/contrib
Tom Lane 0bb28ca36e Fix hashjoin costing mistake introduced with inner_unique optimization.
In final_cost_hashjoin(), commit 9c7f5229a allowed inner_unique cases
to follow a code path previously used only for SEMI/ANTI joins; but it
neglected to fix an if-test within that path that assumed SEMI and ANTI
were the only possible cases.  This resulted in a wrong value for
hashjointuples, and an ensuing bad cost estimate, for inner_unique normal
joins.  Fortunately, for inner_unique normal joins we can assume the number
of joined tuples is the same as for a SEMI join; so there's no need for
more code, we just have to invert the test to check for ANTI not SEMI.

It turns out that in two contrib tests in which commit 9c7f5229a
changed the plan expected for a query, the change was actually wrong
and induced by this estimation error, not by any real improvement.
Hence this patch also reverts those changes.

Per report from RK Korlapati.  Backpatch to v10 where the error was
introduced.

David Rowley

Discussion: https://postgr.es/m/CA+SNy03bhq0fodsfOkeWDCreNjJVjsdHwUsb7AG=jpe0PtZc_g@mail.gmail.com
2018-07-14 11:59:12 -04:00
..
adminpack adminpack: Revoke EXECUTE on pg_logfile_rotate() 2018-05-07 10:10:41 -04:00
amcheck Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
auth_delay Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
auto_explain Allow auto_explain.log_min_duration to go up to INT_MAX. 2018-02-23 14:39:18 -05:00
bloom Fix errors in contrib/bloom index build. 2018-03-22 13:13:58 -04:00
btree_gin Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
btree_gist Fix assorted issues in convert_to_scalar(). 2018-03-03 20:31:35 -05:00
chkpass Further cleanup from the strong-random patch. 2016-12-12 11:55:32 +02:00
citext Fix hashjoin costing mistake introduced with inner_unique optimization. 2018-07-14 11:59:12 -04:00
cube Remove wrongly backpatched piece of code in cube.c 2018-04-10 14:58:46 +03:00
dblink Prevent accidental linking of system-supplied copies of libpq.so etc. 2018-07-09 17:23:31 -04:00
dict_int Update copyright via script for 2017 2017-01-03 13:48:53 -05:00
dict_xsyn Update copyright via script for 2017 2017-01-03 13:48:53 -05:00
earthdistance Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
file_fdw Even if some partitions are foreign, allow tuple routing. 2017-09-07 10:59:28 -04:00
fuzzystrmatch Phase 2 of pgindent updates. 2017-06-21 15:19:25 -04:00
hstore Avoid formally-undefined use of memcpy() in hstoreUniquePairs(). 2017-11-25 14:42:25 -05:00
hstore_plperl Prevent accidental linking of system-supplied copies of libpq.so etc. 2018-07-09 17:23:31 -04:00
hstore_plpython Prevent accidental linking of system-supplied copies of libpq.so etc. 2018-07-09 17:23:31 -04:00
intagg Schema-qualify some references to regprocedure. 2016-06-10 10:41:58 -04:00
intarray Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
isn Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
lo Phase 2 of pgindent updates. 2017-06-21 15:19:25 -04:00
ltree Fix crash in contrib/ltree's lca() function for empty input array. 2018-07-13 18:45:30 -04:00
ltree_plpython Prevent accidental linking of system-supplied copies of libpq.so etc. 2018-07-09 17:23:31 -04:00
oid2name Prevent accidental linking of system-supplied copies of libpq.so etc. 2018-07-09 17:23:31 -04:00
pageinspect pageinspect: Fix use of wrong memory context by hash_page_items. 2018-01-26 09:59:14 -05:00
passwordcheck Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
pg_buffercache Phase 2 of pgindent updates. 2017-06-21 15:19:25 -04:00
pg_freespacemap Default monitoring roles 2017-03-30 14:18:53 -04:00
pg_prewarm Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
pg_standby Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
pg_stat_statements Code review for NextValueExpr expression node type. 2017-07-14 15:25:43 -04:00
pg_trgm Rework word_similarity documentation, make it close to actual algorithm. 2018-03-21 14:37:18 +03:00
pg_visibility Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
pgcrypto Rename base64 routines to avoid conflict with Solaris built-in functions. 2018-02-28 18:33:45 -05:00
pgrowlocks Teach pgrowlocks to check relkind before scanning 2017-06-21 23:19:13 -04:00
pgstattuple pgstatindex: Insert some casts to prevent overflow. 2017-08-10 11:48:42 -04:00
postgres_fdw Fix hashjoin costing mistake introduced with inner_unique optimization. 2018-07-14 11:59:12 -04:00
seg Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
sepgsql Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
spi Prevent accidental linking of system-supplied copies of libpq.so etc. 2018-07-09 17:23:31 -04:00
sslinfo Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
start-scripts Provide modern examples of how to auto-start Postgres on macOS. 2017-11-17 12:47:11 -05:00
tablefunc Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
tcn Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
test_decoding Reduce cost of test_decoding's new oldest_xmin test 2018-07-05 16:58:30 -04:00
tsm_system_rows Update copyright via script for 2017 2017-01-03 13:48:53 -05:00
tsm_system_time Update copyright via script for 2017 2017-01-03 13:48:53 -05:00
unaccent Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
uuid-ossp Phase 2 of pgindent updates. 2017-06-21 15:19:25 -04:00
vacuumlo Prevent accidental linking of system-supplied copies of libpq.so etc. 2018-07-09 17:23:31 -04:00
xml2 Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
contrib-global.mk Respect TEMP_CONFIG when pg_regress_check and friends are called 2016-02-27 12:28:21 -05:00
Makefile Add amcheck extension to contrib. 2017-03-09 16:33:02 -08: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.