• Peter Geoghegan's avatar
    Harden nbtree deduplication posting split code. · 8f72bbac
    Peter Geoghegan authored
    Add a defensive "can't happen" error to code that handles nbtree posting
    list splits (promote an existing assertion).  This avoids a segfault in
    the event of an insertion of a newitem that is somehow identical to an
    existing non-pivot tuple in the index.  An nbtree index should never
    have two index tuples with identical TIDs.
    
    This scenario is not particular unlikely in the event of any kind of
    corruption that leaves the index in an inconsistent state relative to
    the heap relation that is indexed.  There are two known reports of
    preventable hard crashes.  Doing nothing seems unacceptable given the
    general expectation that nbtree will cope reasonably well with corrupt
    data.
    
    Discussion: https://postgr.es/m/CAH2-Wz=Jr_d-dOYEEmwz0-ifojVNWho01eAqewfQXgKfoe114w@mail.gmail.com
    Backpatch: 13-, where nbtree deduplication was introduced.
    8f72bbac
nbtdedup.c 37.1 KB