• Tom Lane's avatar
    Fix erroneous range-union logic for varlena types in contrib/btree_gist. · 94f565dc
    Tom Lane authored
    gbt_var_bin_union() failed to do the right thing when the existing range
    needed to be widened at both ends rather than just one end.  This could
    result in an invalid index in which keys that are present would not be
    found by searches, because the searches would not think they need to
    descend to the relevant leaf pages.  This error affected all the varlena
    datatypes supported by btree_gist (text, bytea, bit, numeric).
    
    Per investigation of a trouble report from Tomas Vondra.  (There is also
    an issue in gbt_var_penalty(), but that should only result in inefficiency
    not wrong answers.  I'm committing this separately so that we have a git
    state in which it can be tested that bad penalty results don't produce
    invalid indexes.)  Back-patch to all supported branches.
    94f565dc
btree_utils_var.c 13.5 KB