Re: documentation inconsistent re: alignment

From: Chapman Flack <chap(at)anastigmatix(dot)net>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: documentation inconsistent re: alignment
Date: 2019-11-12 03:19:24
Message-ID: 5DCA24BC.3080906@anastigmatix.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 10/20/19 14:47, Tom Lane wrote:
> Chapman Flack <chap(at)anastigmatix(dot)net> writes:
>> data type. The allowed values equate to alignment on 1, 2, 4, or 8 byte
>> boundaries."
>> ... while the documentation for pg_type has:
>> "c = char alignment, i.e., no alignment needed.
>> s = short alignment (2 bytes on most machines).
>> i = int alignment (4 bytes on most machines).
>> d = double alignment (8 bytes on many machines, but by no means all)."
>
> Probably the statement in CREATE TYPE is too strong. There are, I
> believe, still machines in the buildfarm where maxalign is just 4.

So just closing the circle on this, the low-down seems to be that
the alignments called s, i, and d (by pg_type), and int2, int4, and
double (by CREATE TYPE) refer to the machine values configure picks
for ALIGNOF_SHORT, ALIGNOF_INT, and ALIGNOF_DOUBLE, respectively.
And while configure also defines an ALIGNOF_LONG, and there are
LONGALIGN macros in c.h that use it, that one isn't a choice when
creating a type, presumably because it's never been usefully different
on any interesting platform?

Regards,
-Chap

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Kyotaro Horiguchi 2019-11-12 03:19:58 Re: PHJ file leak.
Previous Message Kyotaro Horiguchi 2019-11-12 03:11:00 Re: PHJ file leak.