Re: Why do we expand tuples in execMain.c?

From: Andrew Dunstan <andrew(dot)dunstan(at)2ndquadrant(dot)com>
To: Andres Freund <andres(at)anarazel(dot)de>, pgsql-hackers(at)postgresql(dot)org
Subject: Re: Why do we expand tuples in execMain.c?
Date: 2018-08-10 02:42:40
Message-ID: 004ea2ba-f0c3-735c-a616-4c55372d01a2@2ndQuadrant.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 08/08/2018 09:15 PM, Andres Freund wrote:
>
> On August 9, 2018 1:33:17 AM GMT+05:30, Andrew Dunstan <andrew(dot)dunstan(at)2ndquadrant(dot)com> wrote:
>>
>> 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.
> But why is it needed at all, and the deforming code at the site where we access the columns isn't sufficient?
>

Yeah, I think you're right, and this is vestigial code that I neglected
to remove when cleaning up from development.

I'll fix it.

cheers

andrew

--
Andrew Dunstan https://www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Tatsuro Yamada 2018-08-10 03:23:40 Doc patch for index access method function
Previous Message Andrew Dunstan 2018-08-10 02:38:09 Re: Commitfest 2018-07 WOA items