Re: Why there is a union in HeapTupleHeaderData struct

Поиск
Список
Период
Сортировка
От Amit Langote
Тема Re: Why there is a union in HeapTupleHeaderData struct
Дата
Msg-id CA+HiwqHc3A4=KMogXtW3jazMMgnbWkrY8=LXNfALT==G3xyHzQ@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Why there is a union in HeapTupleHeaderData struct  (Amit Langote <amitlangote09@gmail.com>)
Ответы Re: Why there is a union in HeapTupleHeaderData struct
Список pgsql-hackers
Wonder though if this question is better asked in pgsql-novice?

On Mon, May 20, 2013 at 9:23 PM, Amit Langote <amitlangote09@gmail.com> wrote:
> Hello,
>
> I think a more appropriate question to be asked here would be at what
> point (in the life  of a typical tuple), does a tuple's header contain
> t_datum or otherwise, which I would also like to be answered.
>
> On Mon, May 20, 2013 at 6:06 PM, Soroosh Sardari
> <soroosh.sardari@gmail.com> wrote:
>> Thanks,
>>
>> If a tuple constructed in memory we don't need t_heap. I have another
>> question,
>> How make an in-memory tuple?
>>
>>
>>
>>
>> On Mon, May 20, 2013 at 12:46 PM, Amit Langote <amitlangote09@gmail.com>
>> wrote:
>>>
>>> Hello,
>>>
>>> I think the comment just above the HeapTupleFields struct definition
>>> has the related details.
>>>
>>> /*
>>>  * Heap tuple header.  To avoid wasting space, the fields should be
>>>  * laid out in such a way as to avoid structure padding.
>>>  *
>>>  * Datums of composite types (row types) share the same general structure
>>>  * as on-disk tuples, so that the same routines can be used to build and
>>>  * examine them.  However the requirements are slightly different: a Datum
>>>  * does not need any transaction visibility information, and it does need
>>>  * a length word and some embedded type information.  We can achieve this
>>>  * by overlaying the xmin/cmin/xmax/cmax/xvac fields of a heap tuple
>>>  * with the fields needed in the Datum case.  Typically, all tuples built
>>>  * in-memory will be initialized with the Datum fields; but when a tuple
>>> is
>>>  * about to be inserted in a table, the transaction fields will be filled,
>>>  * overwriting the datum fields.
>>>
>>>
>>> especially the last line points as to what roles each of them plays,
>>> though, I would like to hear more about additional details from others
>>> who might reply.
>>>
>>>
>>>
>>> On Mon, May 20, 2013 at 4:28 PM, Soroosh Sardari
>>> <soroosh.sardari@gmail.com> wrote:
>>> > Dear Hackers
>>> >
>>> > In fix part oh HeapTuple, there is a union that is named t_choice,
>>> > union
>>> >     {
>>> >         HeapTupleFields t_heap;
>>> >         DatumTupleFields t_datum;
>>> >     }            t_choice;
>>> >
>>> > I can't find out why we need t_datum, actually there is no comment about
>>> > DatumTupleFields.
>>> >
>>> > Regards
>>> > Soroosh
>>> >
>>> >
>>>
>>>
>>>
>>> --
>>> Amit Langote
>>
>>
>
>
>
> --
> Amit Langote



-- 
Amit Langote



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Andres Freund
Дата:
Сообщение: Re: Better LWLocks with compare-and-swap (9.4)
Следующее
От: "Dickson S. Guedes"
Дата:
Сообщение: Re: Better LWLocks with compare-and-swap (9.4)