Обсуждение: Question about GetAttributeByNum(Name) ExecQual.c

Поиск
Список
Период
Сортировка

Question about GetAttributeByNum(Name) ExecQual.c

От
Zdenek Kotala
Дата:
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

От
Tom Lane
Дата:
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

От
Zdenek Kotala
Дата:
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

От
Tom Lane
Дата:
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