... BTW, one other issue with changing this, at least if we want to
precompute tupdescs for all system catalogs used in catcaches, is that
that would put a very big crimp in doing runtime changes to catalogs.
While we'll probably never support changes in the physical layouts
of catalog rows, there is interest in being able to change some
auxiliary pg_attribute fields, e.g. attstattarget [1]. So we'd need
to be sure that the compiled-in tupdescs are only used to disassemble
catalog tuples, and not for other purposes.
Of course this issue arises already for the bootstrap catalogs, so
maybe it's been dealt with sufficiently. But it's something to keep
an eye on.
regards, tom lane
[1] https://www.postgresql.org/message-id/flat/8b00ea5e-28a7-88ba-e848-21528b632354%402ndquadrant.com