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.
Branch
------
master
Details
-------
http://git.postgresql.org/pg/commitdiff/c8ba697a4bdb934f0c51424c654e8db6133ea255
Modified Files
--------------
src/backend/access/gist/gistbuildbuffers.c | 43 +++++++++++++++++++++++----
src/backend/access/gist/gistutil.c | 45 ++++++++++++++++++++++++++-
2 files changed, 80 insertions(+), 8 deletions(-)