Fix logic bug in gistchoose and gistRelocateBuildBuffersOnSplit.

Robert Haas <rhaas@postgresql.org>

Commit: c8ba697a4bdb934f0c51424c654e8db6133ea255
Author: Robert Haas <rhaas@postgresql.org>
Date: 2012-08-30T17:09:07Z
Releases: 9.3.0
Fix logic bug in gistchoose and gistRelocateBuildBuffersOnSplit.

Every time the best-tuple-found-so-far changes, we need to reset all
the penalty values in which_grow[] to the penalties for the new best
tuple.  The old code failed to do this, resulting in inferior index
quality.

The original patch from Alexander Korotkov was just two lines; I took
the liberty of fleshing that out by adding a bunch of comments that I
hope will make this logic easier for others to understand than it was
for me.

Files