Andrew Dunstan <andrew@dunslane.net> writes:
> After (not) sleeping on this overnight, and discussing it with a
> colleague this morning, here's a suggestion. We have a hash table, keyed
> by (tdtypeid, attnum) where we store a datumCopy'd version of the value.
> If it's present just return the value instead of getting it from the
> tupdesc. The hash table is blown away at the end of the transaction.
> Assuming that's workable I think it would not be a large patch.
That sounds possibly workable. I'm a bit concerned about added
overhead, and about whether the hashtable needs invalidation support.
It might be better to key it off (relfilenode, attnum).
> My colleague did ask if we had live reproducible case.
I have not attempted to build one, but it'd probably be fairly
easy to do if you turn on debug_discard_caches.
regards, tom lane