On 11.04.2011 23:35, jagan wrote:
Suppose I create a table as follows:
CREATE TABLE test2 (name TEXT, age INTEGER) WITH oids;
Now, for every tuple in this table is associated with a unique oid, which I can
SELECT oid, name, age FROM test2;
which works great. So far so good.
Now, if look at the corresponding WAL entry for any insert into this relation,
it creates the following WAL entry which I can decode.
XLogRecord ---> Followed by --> xl_heap_insert struct -->followed by -->
xl_heap_header --> Followed by --> tuple data
If I use the macro HeapTupleHeaderGetOid([xl_heap_header struct])
Yeah, that won't work because xl_heap_header is not a HeapTupleHeader.
or equivalently if I test ([xl_heap_header struct]->t_infomask& HEAP_HASOID),
it tells me that the tuple oid is not stored with this record.
That's strange, the flag should be set.
Where is the OID of tuple stored in a WAL record of a tuple? If not with
xl_heap_header, where is it stored? Is it stored at all?
It's stored in the "tuple data" portion. See the code that writes the
WAL record, here:
Maybe the WAL record you're looking at is a full-page image? A record
with a full-page image includes a verbatim copy of the page, and the
individual tuple is omitted in that case.
Sent via pgsql-hackers mailing list (firstname.lastname@example.org)
To make changes to your subscription: