• Michael Paquier's avatar
    Rework handling of invalid indexes with REINDEX CONCURRENTLY · a6dcf9df
    Michael Paquier authored
    Per discussion with others, allowing REINDEX INDEX CONCURRENTLY to work
    for invalid indexes when working directly on them can have a lot of
    value to unlock situations with invalid indexes without having to use a
    dance involving DROP INDEX followed by an extra CREATE INDEX
    CONCURRENTLY (which would not work for indexes with constraint
    dependency anyway).  This also does not create extra bloat on the
    relation involved as this works on individual indexes, so let's enable
    it.
    
    Note that REINDEX TABLE CONCURRENTLY still bypasses invalid indexes as
    we don't want to bloat the number of indexes defined on a relation in
    the event of multiple and successive failures of REINDEX CONCURRENTLY.
    
    More regression tests are added to cover those behaviors, using an
    invalid index created with CREATE INDEX CONCURRENTLY.
    
    Reported-by: Dagfinn Ilmari Mannsåker, Álvaro Herrera
    Author: Michael Paquier
    Reviewed-by: Peter Eisentraut, Dagfinn Ilmari Mannsåker
    Discussion: https://postgr.es/m/20190411134947.GA22043@alvherre.pgsql
    a6dcf9df
create_index.sql 33 KB