postgresql/contrib
Tom Lane 9221f9d485 Make contrib/btree_gist's GiST penalty function a bit saner.
The previous coding supposed that the first differing bytes in two varlena
datums must have the same sign difference as their overall comparison
result.  This is obviously bogus for text strings in non-C locales, and
probably wrong for numeric, and even for bytea I think it was wrong on
machines where char is signed.  When the assumption failed, the function
could deliver a zero or negative penalty in situations where such a result
is quite ridiculous, leading the core GiST code to make very bad page-split
decisions.

To fix, take the absolute values of the byte-level differences.  Also,
switch the code to using unsigned char not just char, so that the behavior
will be consistent whether char is signed or not.

Per investigation of a trouble report from Tomas Vondra.  Back-patch to all
supported branches.
2013-02-07 19:13:59 -05:00
..
adminpack Update copyrights for 2013 2013-01-01 17:15:01 -05:00
auth_delay Limit values of archive_timeout, post_auth_delay, auth_delay.milliseconds. 2012-11-18 17:15:06 -05:00
auto_explain Update copyrights for 2013 2013-01-01 17:15:01 -05:00
btree_gin Throw a useful error message if an extension script file is fed to psql. 2011-10-12 15:45:03 -04:00
btree_gist Make contrib/btree_gist's GiST penalty function a bit saner. 2013-02-07 19:13:59 -05:00
chkpass Throw a useful error message if an extension script file is fed to psql. 2011-10-12 15:45:03 -04:00
citext Reduce messages about implicit indexes and sequences to DEBUG1. 2012-07-04 20:35:29 -04:00
cube Improve handling of ereport(ERROR) and elog(ERROR). 2013-01-13 18:40:09 -05:00
dblink Update copyrights for 2013 2013-01-01 17:15:01 -05:00
dict_int Update copyrights for 2013 2013-01-01 17:15:01 -05:00
dict_xsyn Update copyrights for 2013 2013-01-01 17:15:01 -05:00
dummy_seclabel Update copyrights for 2013 2013-01-01 17:15:01 -05:00
earthdistance Throw a useful error message if an extension script file is fed to psql. 2011-10-12 15:45:03 -04:00
file_fdw Improve error message wording 2013-02-06 00:19:53 -03:00
fuzzystrmatch Update copyrights for 2013 2013-01-01 17:15:01 -05:00
hstore Provide some static-assertion functionality on all compilers. 2012-09-30 22:46:29 -04:00
intagg Throw a useful error message if an extension script file is fed to psql. 2011-10-12 15:45:03 -04:00
intarray Remove unreachable code 2012-07-16 22:15:03 +03:00
isn Update copyrights for 2013 2013-01-01 17:15:01 -05:00
lo Throw a useful error message if an extension script file is fed to psql. 2011-10-12 15:45:03 -04:00
ltree Split tuple struct defs from htup.h to htup_details.h 2012-08-30 16:52:35 -04:00
oid2name Work around unportable behavior of malloc(0) and realloc(NULL, 0). 2012-10-02 17:32:42 -04:00
pageinspect Improve concurrency of foreign key locking 2013-01-23 12:04:59 -03:00
passwordcheck Update copyrights for 2013 2013-01-01 17:15:01 -05:00
pg_archivecleanup In our source code, make a copy of getopt's 'optarg' string arguments, 2012-10-12 13:35:43 -04:00
pg_buffercache Split tuple struct defs from htup.h to htup_details.h 2012-08-30 16:52:35 -04:00
pg_freespacemap Throw a useful error message if an extension script file is fed to psql. 2011-10-12 15:45:03 -04:00
pg_standby In our source code, make a copy of getopt's 'optarg' string arguments, 2012-10-12 13:35:43 -04:00
pg_stat_statements Update copyrights for 2013 2013-01-01 17:15:01 -05:00
pg_test_fsync Move long_options structures to the top of main() functions, for 2012-11-30 14:49:55 -05:00
pg_test_timing Move long_options structures to the top of main() functions, for 2012-11-30 14:49:55 -05:00
pg_trgm Fix bugs in contrib/pg_trgm's LIKE pattern analysis code. 2012-08-20 13:25:42 -04:00
pg_upgrade pg_upgrade: detect stale postmaster.pid lock files 2013-01-24 15:20:40 -05:00
pg_upgrade_support Update copyrights for 2013 2013-01-01 17:15:01 -05:00
pgbench Add --aggregate-interval option. 2013-01-31 15:53:58 +09:00
pgcrypto Run pgindent on 9.2 source tree in preparation for first 9.3 2012-06-10 15:20:04 -04:00
pgrowlocks pgrowlocks: fix bogus lock strength output 2013-01-31 19:15:35 -03:00
pgstattuple Add pgstatginindex() function to get the size of the GIN pending list. 2012-12-05 09:58:03 +02:00
seg Improve handling of ereport(ERROR) and elog(ERROR). 2013-01-13 18:40:09 -05:00
sepgsql Update copyrights for 2013 2013-01-01 17:15:01 -05:00
spi Run pgindent on 9.2 source tree in preparation for first 9.3 2012-06-10 15:20:04 -04:00
sslinfo Lots of doc corrections. 2012-04-23 22:43:09 -04:00
start-scripts Support Linux's oom_score_adj API as well as the older oom_adj API. 2012-06-13 15:35:52 -04:00
tablefunc Update copyrights for 2013 2013-01-01 17:15:01 -05:00
tcn Update copyrights for 2013 2013-01-01 17:15:01 -05:00
test_parser Update copyrights for 2013 2013-01-01 17:15:01 -05:00
tsearch2 Update copyrights for 2013 2013-01-01 17:15:01 -05:00
unaccent Update copyrights for 2013 2013-01-01 17:15:01 -05:00
uuid-ossp Update copyrights for 2013 2013-01-01 17:15:01 -05:00
vacuumlo Update copyrights for 2013 2013-01-01 17:15:01 -05:00
worker_spi Background worker processes 2012-12-06 17:47:30 -03:00
xml2 Split tuple struct defs from htup.h to htup_details.h 2012-08-30 16:52:35 -04:00
contrib-global.mk Remove cvs keywords from all files. 2010-09-20 22:08:53 +02:00
Makefile Background worker processes 2012-12-06 17:47:30 -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.