Wouldn't it be a win for heap_tuple_toast_attrs() to fall out quickly
if the tuple contains no varlena attributes? I'm thinking of adding
a test like
/* Nothing to do if tuple contains no varlena fields */if ((newtup && !HeapTupleAllFixed(newtup)) || (oldtup &&
!HeapTupleAllFixed(oldtup))) /* do existing processing */
This is a pretty cheap test (just checking a header flag) and saves lots
of useless scanning when it succeeds.
regards, tom lane