Thread: Question about GetAttributeByNum(Name) ExecQual.c

Question about GetAttributeByNum(Name) ExecQual.c

From
Zdenek Kotala
Date:
GetAttributeByNum has first parameter as HeapTupleHeader,  but most functions 
use Datum and after that they call DatumGetHeapTupleHeader. The difference is 
that DatumGetHeapTupleHeader performs detoast on tuple(row type).

Is it intention do not detoast in these functions or it is a bug?
thanks Zdenek


-- 
Zdenek Kotala              Sun Microsystems
Prague, Czech Republic     http://sun.com/postgresql



Re: Question about GetAttributeByNum(Name) ExecQual.c

From
Tom Lane
Date:
Zdenek Kotala <Zdenek.Kotala@Sun.COM> writes:
> GetAttributeByNum has first parameter as HeapTupleHeader,  but most functions 
> use Datum and after that they call DatumGetHeapTupleHeader. The difference is 
> that DatumGetHeapTupleHeader performs detoast on tuple(row type).

> Is it intention do not detoast in these functions or it is a bug?

You would certainly not want a tuple to get separately detoasted for
each attribute you pull from it.  So having detoasting here would be
the wrong thing IMHO.
        regards, tom lane


Re: Question about GetAttributeByNum(Name) ExecQual.c

From
Zdenek Kotala
Date:
Tom Lane napsal(a):
> Zdenek Kotala <Zdenek.Kotala@Sun.COM> writes:
>> GetAttributeByNum has first parameter as HeapTupleHeader,  but most functions 
>> use Datum and after that they call DatumGetHeapTupleHeader. The difference is 
>> that DatumGetHeapTupleHeader performs detoast on tuple(row type).
> 
>> Is it intention do not detoast in these functions or it is a bug?
> 
> You would certainly not want a tuple to get separately detoasted for
> each attribute you pull from it.  So having detoasting here would be
> the wrong thing IMHO.

Does it mean that these function are every time called with heap tuple or 
untoasted row type (composite data type)? What is purpose of these function. 
They are not use in executor and never in the core (only in example and 
regress). Should be really in executor?
Thanks Zdenek



-- 
Zdenek Kotala              Sun Microsystems
Prague, Czech Republic     http://sun.com/postgresql



Re: Question about GetAttributeByNum(Name) ExecQual.c

From
Tom Lane
Date:
Zdenek Kotala <Zdenek.Kotala@Sun.COM> writes:
> Does it mean that these function are every time called with heap tuple or 
> untoasted row type (composite data type)? What is purpose of these function. 

Legacy support for third-party modules.  They're really pretty much
deprecated but I don't foresee removing them.
        regards, tom lane