Go to file
Heikki Linnakangas 930fd68455 Revert the GinMaxItemSize calculation so that we fit 3 tuples per page.
Commit 36a35c55 changed the divisor from 3 to 6, for no apparent reason.
Reducing GinMaxItemSize like that created a dump/reload hazard: loading a
9.3 database to 9.4 might fail with "index row size XXX exceeds maximum 1352
for index ..." error. Revert the change.

While we're at it, make the calculation slightly more accurate. It used to
divide the available space on page by three, then subtract
sizeof(ItemIdData), and finally round down. That's not totally accurate; the
item pointers for the three items are packed tight right after the page
header, but there is alignment padding after the item pointers. Change the
calculation to reflect that, like BTMaxItemSize does. I tested this with
different block sizes on systems with 4- and 8-byte alignment, and the value
after the final MAXALIGN_DOWN was the same with both methods on all
configurations. So this does not make any difference currently, but let's be
tidy.

Also add a comment explaining what the macro does.

This fixes bug #12292 reported by Robert Thaler. Backpatch to 9.4, where the
bug was introduced.
2014-12-30 14:53:11 +02:00
config Detect PG_PRINTF_ATTRIBUTE automatically. 2014-11-23 09:34:03 -05:00
contrib Fix resource leak pointed out by Coverity. 2014-12-30 20:33:01 +09:00
doc Assorted minor fixes for psql metacommand docs. 2014-12-29 14:20:54 -05:00
src Revert the GinMaxItemSize calculation so that we fit 3 tuples per page. 2014-12-30 14:53:11 +02:00
.dir-locals.el
.gitattributes
.gitignore Update .gitignore for config.cache. 2014-12-18 19:56:42 +09:00
aclocal.m4
configure Detect PG_PRINTF_ATTRIBUTE automatically. 2014-11-23 09:34:03 -05:00
configure.in Detect PG_PRINTF_ATTRIBUTE automatically. 2014-11-23 09:34:03 -05:00
COPYRIGHT
GNUmakefile.in
HISTORY
Makefile
README
README.git

PostgreSQL Database Management System
=====================================

This directory contains the source code distribution of the PostgreSQL
database management system.

PostgreSQL is an advanced object-relational database management system
that supports an extended subset of the SQL standard, including
transactions, foreign keys, subqueries, triggers, user-defined types
and functions.  This distribution also contains C language bindings.

PostgreSQL has many language interfaces, many of which are listed here:

	http://www.postgresql.org/download

See the file INSTALL for instructions on how to build and install
PostgreSQL.  That file also lists supported operating systems and
hardware platforms and contains information regarding any other
software packages that are required to build or run the PostgreSQL
system.  Copyright and license information can be found in the
file COPYRIGHT.  A comprehensive documentation set is included in this
distribution; it can be read as described in the installation
instructions.

The latest version of this software may be obtained at
http://www.postgresql.org/download/.  For more information look at our
web site located at http://www.postgresql.org/.