Re: Why there is a union in HeapTupleHeaderData struct

From: Amit Langote <amitlangote09(at)gmail(dot)com>
To: Soroosh Sardari <soroosh(dot)sardari(at)gmail(dot)com>
Cc: PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Why there is a union in HeapTupleHeaderData struct
Date: 2013-05-20 08:16:59
Message-ID: CA+HiwqGKyz7Xq4F9aG+e4G_pvmHnbG3YKF2Dk50_wOGgBfsbbQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

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(dot)sardari(at)gmail(dot)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

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Soroosh Sardari 2013-05-20 09:06:30 Re: Why there is a union in HeapTupleHeaderData struct
Previous Message Dean Rasheed 2013-05-20 07:50:29 Re: [9.3] Automatically updatable views vs writable foreign tables