• Tom Lane's avatar
    Create a "relation mapping" infrastructure to support changing the relfilenodes · b9b8831a
    Tom Lane authored
    of shared or nailed system catalogs.  This has two key benefits:
    
    * The new CLUSTER-based VACUUM FULL can be applied safely to all catalogs.
    
    * We no longer have to use an unsafe reindex-in-place approach for reindexing
      shared catalogs.
    
    CLUSTER on nailed catalogs now works too, although I left it disabled on
    shared catalogs because the resulting pg_index.indisclustered update would
    only be visible in one database.
    
    Since reindexing shared system catalogs is now fully transactional and
    crash-safe, the former special cases in REINDEX behavior have been removed;
    shared catalogs are treated the same as non-shared.
    
    This commit does not do anything about the recently-discussed problem of
    deadlocks between VACUUM FULL/CLUSTER on a system catalog and other
    concurrent queries; will address that in a separate patch.  As a stopgap,
    parallel_schedule has been tweaked to run vacuum.sql by itself, to avoid
    such failures during the regression tests.
    b9b8831a
pg_proc.h 408 KB