Andres Freund <and...@anarazel.de> writes: > That's not *too* bad, but also not nothing....
The memsets seem to be easy to get rid of. memset the array to zeroes *once* before entering the per-tuple loop. Then, in the loop that looks for stuff to pfree, reset any entries that are found to be set, thereby returning the array to all zeroes for the next iteration. I"m having a hard time though believing that the memset is the main problem. I'd think the pfree search loop is at least as expensive. Maybe skip that when not useful, by having a single bool flag remembering whether any columns got detoasted in this row? regards, tom lane