postgres/contrib/btree_gist
Tom Lane cd3dfb02d8 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:14:13 -05:00
..
data Add missing newlines at end of files 2010-10-26 20:11:43 +03:00
expected Add KNNGIST support to contrib/btree_gist. 2011-03-02 14:44:33 -05:00
sql Add KNNGIST support to contrib/btree_gist. 2011-03-02 14:44:33 -05:00
.gitignore Support "make check" in contrib 2011-04-25 22:27:11 +03:00
btree_bit.c Fix contrib/btree_gist to handle collations properly. 2011-04-22 20:19:58 -04:00
btree_bytea.c Fix contrib/btree_gist to handle collations properly. 2011-04-22 20:19:58 -04:00
btree_cash.c pgindent run before PG 9.1 beta 1. 2011-04-10 11:42:00 -04:00
btree_date.c pgindent run before PG 9.1 beta 1. 2011-04-10 11:42:00 -04:00
btree_float4.c pgindent run before PG 9.1 beta 1. 2011-04-10 11:42:00 -04:00
btree_float8.c pgindent run before PG 9.1 beta 1. 2011-04-10 11:42:00 -04:00
btree_gist--1.0.sql Throw a useful error message if an extension script file is fed to psql. 2011-10-12 15:45:36 -04:00
btree_gist--unpackaged--1.0.sql Throw a useful error message if an extension script file is fed to psql. 2011-10-12 15:45:36 -04:00
btree_gist.c Remove cvs keywords from all files. 2010-09-20 22:08:53 +02:00
btree_gist.control Convert contrib modules to use the extension facility. 2011-02-13 22:54:49 -05:00
btree_gist.h Remove cvs keywords from all files. 2010-09-20 22:08:53 +02:00
btree_inet.c Add KNNGIST support to contrib/btree_gist. 2011-03-02 14:44:33 -05:00
btree_int2.c pgindent run before PG 9.1 beta 1. 2011-04-10 11:42:00 -04:00
btree_int4.c pgindent run before PG 9.1 beta 1. 2011-04-10 11:42:00 -04:00
btree_int8.c pgindent run before PG 9.1 beta 1. 2011-04-10 11:42:00 -04:00
btree_interval.c pgindent run before PG 9.1 beta 1. 2011-04-10 11:42:00 -04:00
btree_macaddr.c Add KNNGIST support to contrib/btree_gist. 2011-03-02 14:44:33 -05:00
btree_numeric.c Fix contrib/btree_gist to handle collations properly. 2011-04-22 20:19:58 -04:00
btree_oid.c pgindent run before PG 9.1 beta 1. 2011-04-10 11:42:00 -04:00
btree_text.c Fix contrib/btree_gist to handle collations properly. 2011-04-22 20:19:58 -04:00
btree_time.c pgindent run before PG 9.1 beta 1. 2011-04-10 11:42:00 -04:00
btree_ts.c pgindent run before PG 9.1 beta 1. 2011-04-10 11:42:00 -04:00
btree_utils_num.c Fix contrib/btree_gist to handle collations properly. 2011-04-22 20:19:58 -04:00
btree_utils_num.h pgindent run before PG 9.1 beta 1. 2011-04-10 11:42:00 -04:00
btree_utils_var.c Make contrib/btree_gist's GiST penalty function a bit saner. 2013-02-07 19:14:13 -05:00
btree_utils_var.h Pgindent run before 9.1 beta2. 2011-06-09 14:32:50 -04:00
Makefile Add -lm to SHLIB_LINK for contrib/btree_gist. 2011-03-03 01:43:38 -05:00