I find the following varlena (ie, potentially toastable) columns
present in the system tables:
relname | attname | typname | attstorage
----------------+--------------+----------+------------pg_aggregate | agginitval | text | xpg_attrdef |
adbin | text | ppg_attrdef | adsrc | text | ppg_class | relacl | _aclitem |
mpg_database | datpath | text | ppg_description | description | text | xpg_group | grolist |
_int4 | ppg_index | indpred | text | xpg_language | lancompiler | text | xpg_proc |
probin | bytea | ppg_proc | prosrc | text | ppg_relcheck | rcbin | text |
ppg_relcheck | rcsrc | text | ppg_rewrite | ev_action | text | xpg_rewrite | ev_qual |
text | xpg_shadow | passwd | text | ppg_statistic | stacommonval | text | xpg_statistic |
stahival | text | xpg_statistic | staloval | text | xpg_trigger | tgargs | bytea |
ppg_type | typdefault | text | p
Of these tables, only pg_rewrite has a toast table so far.
Offhand it would seem to be a good idea to create toast tables for
pg_attrdef, pg_description, pg_proc, pg_relcheck, possibly pg_statistic.
Certainly a toast table for pg_proc is a must so that we can deal with
large procedure bodies. Toasting pg_attrdef would allow very large
column default expressions (dubious value), pg_description for long
comments (probably should have this), pg_relcheck for long constraint
expressions (probably want this), pg_statistic to cope with long
min/max/common values (not sure about this).
I doubt the other system tables need toast tables, although we may as
well mark all of these attributes "m", ie, they should be compressible
in-line even if there is no toast table.
Comments?
regards, tom lane