• Peter Eisentraut's avatar
    Ignore attempts to add TOAST table to shared or catalog tables · 590a8702
    Peter Eisentraut authored
    Running ALTER TABLE on any table will check if a TOAST table needs to be
    added.  On shared tables, this would previously fail, thus effectively
    disabling ALTER TABLE for those tables.  On (non-shared) system
    catalogs, on the other hand, it would add a TOAST table, even though we
    don't really want TOAST tables on some system catalogs.  In some cases,
    it would also fail with an error "AccessExclusiveLock required to add
    toast table.", depending on what locks the ALTER TABLE actions had
    already taken.
    
    So instead, just ignore attempts to add TOAST tables to such tables,
    outside of bootstrap mode, pretending they don't need one.
    
    This allows running ALTER TABLE on such tables without messing up the
    TOAST situation.  Legitimate uses for ALTER TABLE on system catalogs
    include setting reloptions (say, fillfactor or autovacuum settings).
    
    (All this still requires allow_system_table_mods, which is independent
    of this.)
    
    Discussion: https://www.postgresql.org/message-id/flat/e49f825b-fb25-0bc8-8afc-d5ad895c7975@2ndquadrant.com
    590a8702
toasting.c 13.4 KB