• Tom Lane's avatar
    Don't create pg_type entries for sequences or toast tables. · f3faf35f
    Tom Lane authored
    Commit f7f70d5e left one inconsistency behind: we're still creating
    pg_type entries for the composite types of sequences and toast tables,
    but not arrays over those composites.  But there seems precious little
    reason to have named composite types for toast tables, and not much more
    to have them for sequences (especially given the thought that sequences
    may someday not be standalone relations at all).
    
    So, let's close that inconsistency by removing these composite types,
    rather than adding arrays for them.  This buys back a little bit of
    the initial pg_type bloat added by the previous patch, and could be
    a significant savings in a large database with many toast tables.
    
    Aside from a small logic rearrangement in heap_create_with_catalog,
    this patch mostly needs to clean up some places that were assuming that
    pg_class.reltype always has a valid value.  Those are really pre-existing
    bugs, given that it's documented otherwise; notably, the plpgsql changes
    fix code that gives "cache lookup failed for type 0" on indexes today.
    But none of these seem interesting enough to back-patch.
    
    Also, remove the pg_dump/pg_upgrade infrastructure for propagating
    a toast table's pg_type OID into the new database, since we no longer
    need that.
    
    Discussion: https://postgr.es/m/761F1389-C6A8-4C15-80CE-950C961F5341@gmail.com
    f3faf35f
heap.c 112 KB