• Peter Geoghegan's avatar
    Teach amcheck to verify sibling links in all cases. · 39132b78
    Peter Geoghegan authored
    Teach contrib/amcheck's bt_index_check() function to check agreement
    between siblings links.  The left sibling's right link should point to a
    right sibling page whose left link points back to the same original left
    sibling.  This extends a check that bt_index_parent_check() always
    performed to bt_index_check().
    
    This is the first time amcheck has been taught to perform buffer lock
    coupling, which we have explicitly avoided up until now.  The sibling
    link check tends to catch a lot of real world index corruption with
    little overhead, so it seems worth accepting the complexity.  Note that
    the new lock coupling logic would not work correctly on replica servers
    without the changes made by commits 0a7d771f and 9a9db08a (there could
    be false positives without those changes).
    
    Author: Andrey Borodin, Peter Geoghegan
    Discussion: https://postgr.es/m/0EB0CFA8-CBD8-4296-8049-A2C0F28FAE8C@yandex-team.ru
    39132b78
verify_nbtree.c 119 KB