On 08/08/2018 12:20 AM, Andres Freund wrote:
Hi, I noticed if (HeapTupleHeaderGetNatts(tuple.t_data) < RelationGetDescr(erm->relation)->natts) { copyTuple = heap_expand_tuple(&tuple, RelationGetDescr(erm->relation)); } else { /* successful, copy tuple */ copyTuple = heap_copytuple(&tuple); } in EvalPlanQualFetchRowMarks, and I'm somewhat confused why it's there? If it's required here, why isn't it required in dozens of other places?
Not dozens, I think, since you can't have short records for catalog tables, which account for most of the calls to heap_copytuple().
I will look at the remainder of cases (less than 10) and reply in a day or two.
cheers andrew -- Andrew Dunstan https://www.2ndQuadrant.com PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services