postgresql/src/backend
Tom Lane 06af3f9656 Further cleanup of gistsplit.c.
After further reflection I was unconvinced that the existing coding is
guaranteed to return valid union datums in every code path for multi-column
indexes.  Fix that by forcing a gistunionsubkey() call at the end of the
recursion.  Having done that, we can remove some clearly-redundant calls
elsewhere.  This should be a little faster for multi-column indexes (since
the previous coding would uselessly do such a call for each column while
unwinding the recursion), as well as much harder to break.

Also, simplify the handling of cases where one side or the other of a
primary split contains only don't-care tuples.  The previous coding used a
very ugly hack in removeDontCares() that essentially forced one random
tuple to be treated as non-don't-care, providing a random initial choice of
seed datum for the secondary split.  It seems unlikely that that method
will give better-than-random splits.  Instead, treat such a split as
degenerate and just let the next column determine the split, the same way
that we handle fully degenerate cases where the two sides produce identical
union datums.
2013-02-10 16:21:46 -05:00
..
access Further cleanup of gistsplit.c. 2013-02-10 16:21:46 -05:00
bootstrap Avoid changing an index's indcheckxmin horizon during REINDEX. 2011-04-19 18:51:08 -04:00
catalog DROP OWNED: don't try to drop tablespaces/databases 2013-01-28 19:02:26 -03:00
commands Fix typo in freeze_table_age implementation 2013-02-01 12:11:33 -03:00
executor Add defenses against integer overflow in dynahash numbuckets calculations. 2012-12-11 22:09:34 -05:00
foreign deflist_to_tuplestore dumped core on an option with no value. 2011-09-13 11:37:03 -04:00
lib Update copyright for 2009. 2009-01-01 17:24:05 +00:00
libpq Produce a more useful error message for over-length Unix socket paths. 2012-11-29 19:57:33 -05:00
main Update copyright for 2009. 2009-01-01 17:24:05 +00:00
nodes Fix planning of non-strict equivalence clauses above outer joins. 2012-10-18 12:29:13 -04:00
optimizer Fix assorted bugs in CREATE INDEX CONCURRENTLY. 2012-11-29 14:52:22 -05:00
parser Fix grammar for subscripting or field selection from a sub-SELECT result. 2013-01-30 14:16:51 -05:00
po Translation updates 2013-02-03 23:53:08 -05:00
port Fix Windows implementation of PGSemaphoreLock. 2012-05-10 13:36:28 -04:00
postmaster Fix possible failure to send final transaction counts to stats collector. 2013-02-07 14:44:24 -05:00
regex Prevent corner-case core dump in rfree(). 2012-07-15 13:28:27 -04:00
rewrite Prevent CREATE TABLE LIKE/INHERITS from (mis) copying whole-row Vars. 2012-06-30 16:44:14 -04:00
snowball Convert cvsignore to gitignore, and add .gitignore for build targets. 2010-09-22 12:57:08 +02:00
storage Add missing period to detail message. 2012-08-30 13:27:35 -04:00
tcop set_stack_base() no longer needs to be called in PostgresMain. 2012-04-08 19:41:59 +03:00
tsearch Fix bug in to_tsquery(). 2012-05-16 14:39:52 +03:00
utils Prevent execution of enum_recv() from SQL. 2013-02-04 16:25:25 -05:00
.gitignore Convert cvsignore to gitignore, and add .gitignore for build targets. 2010-09-22 12:57:08 +02:00
common.mk Code coverage testing with gcov. Documentation is in the regression test 2008-09-05 12:11:18 +00:00
Makefile Fix PGXS support for building loadable modules on AIX. 2012-10-09 21:04:26 -04:00
nls.mk Translation updates 2013-02-03 23:53:08 -05:00