I noticed that when a column is dropped, RemoveAttributeById() clears
out certain fields in pg_attribute, but it leaves the variable-length
fields at the end (attacl, attoptions, and attfdwoptions) unchanged.
This is probably harmless, but it seems wasteful and unclean, and leaves
potentially dangling data lying around (for example, attacl could
contain references to users that are later also dropped).
I suggest the attached patch to set those fields to null when a column
is marked as dropped.