Re: Wrap access to Oid in HeapTupleHeader

From: Manfred Koizar <mkoi-pg(at)aon(dot)at>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: pgsql-patches(at)postgresql(dot)org
Subject: Re: Wrap access to Oid in HeapTupleHeader
Date: 2002-07-03 14:06:50
Message-ID: 1cu5iu0f5ps86j5ja3c9k4q308gucsi5m6@4ax.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-patches

On Mon, 01 Jul 2002 11:10:20 -0400, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
wrote:
>Yes, but I still think the Assert is useless. The only thing it can
>catch is failure to set t_hoff before touching the OID, but in practice
>if t_hoff has not been set then it will be uninitialized garbage; the
>odds that the Assert will actually fire are only about 1 in 10.

Sad, but true. Thanks for pointing that out.

AssertMacro((tup)->t_hoff >= offsetof(HeapTupleHeaderData, t_bits))

should be

AssertMacro((tup)->t_hoff == ExpectedLen(tup))

where

#define ExpectedLen(tup) MAXALIGN( \
offsetof(HeapTupleHeaderData, t_bits) + \
(((tup)->t_infomask | HEAP_HASNULL) \
? BITMAPLEN((tup)->t_natts) : 0) \
)
Sure, this is even more expensive, but it catches 255 out of 256
errors.

On Mon, 01 Jul 2002 10:40:34 -0400, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote
on -hackers:
>Also, you could be a little more conservative about
>adding Asserts --- those are not free, at least not from a development
>point of view, so I object to adding multiple redundant Asserts in
>hotspot routines.

Messing around with tuple headers is delicate stuff IMHO, and I don't
want to be remembered as the man who broke the best open source
database. So I cowardly put in those Asserts ... If you are concerned
about performance in development versions, is there any chance you
could be convinced of a configurable paranoia level? Then I could
write
Assert3(...)

which would expand to
if (PARANOIA_LEVEL >= 3) Assert(...)

Servus
Manfred

In response to

Responses

Browse pgsql-patches by date

  From Date Subject
Next Message Tom Lane 2002-07-03 14:21:40 Re: Wrap access to Oid in HeapTupleHeader
Previous Message Manfred Koizar 2002-07-03 10:26:33 Re: [PATCHES] Reduce heap tuple header size