• Michael Paquier's avatar
    Fix handling of pg_class.relispartition at swap phase in REINDEX CONCURRENTLY · d80be6f2
    Michael Paquier authored
    When cancelling REINDEX CONCURRENTLY after swapping the old and new
    indexes (for example interruption at step 5), the old index remains
    around and is marked as invalid.  The old index should also be manually
    droppable to clean up the parent relation from any invalid indexes still
    remaining.  For a partition index reindexed, pg_class.relispartition was
    not getting updated, causing the index to not be droppable as DROP INDEX
    would look for dependencies in a partition tree, which do not exist
    anymore after the swap phase is done.
    
    The fix here is simple: when swapping the old and new indexes, make sure
    that pg_class.relispartition is correctly switched, similarly to what is
    done for the index name.
    
    Reported-by: Justin Pryzby
    Author: Michael Paquier
    Discussion: https://postgr.es/m/20191015164047.GA22729@telsasoft.com
    Backpatch-through: 12
    d80be6f2
index.c 123 KB