Re: VARATT_EXTERNAL_GET_POINTER is not quite there yet

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Gregory Stark <stark(at)enterprisedb(dot)com>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: VARATT_EXTERNAL_GET_POINTER is not quite there yet
Date: 2008-02-21 17:13:18
Message-ID: 11927.1203613998@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Gregory Stark <stark(at)enterprisedb(dot)com> writes:
> "Tom Lane" <tgl(at)sss(dot)pgh(dot)pa(dot)us> writes:
>> I can't say that I find this a nice clean solution; but does anyone have
>> a better one?

> I'm thinking instead of having struct varlena (which you're not allowed to
> safely use any members of anyways) we should just have a typedef to void*.

I don't think we could imagine eliminating the struct name, especially
not as a back-patchable solution; there would be too many random
breakages.

It might work to change struct varlena's contents to something like

char vl_len_[4]; /* Do not touch this field directly! */
char vl_dat[1];

so that the compiler wouldn't see it as necessarily having more than
1-byte alignment. This would also not break any existing code that is
following the rules (touching vl_dat has never been stated to be
verboten).

regards, tom lane

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2008-02-21 17:23:05 Re: TO_DATE behavior!
Previous Message Ron Mayer 2008-02-21 16:53:19 Re: Permanent settings