On 02.04.22 10:13, Noah Misch wrote:
> uint64 and pg_lsn use TYPALIGN_DOUBLE. For AIX, they really need a typalign
> corresponding to ALIGNOF_LONG. Hence, the C struct layout doesn't match the
> tuple layout. Columns potentially affected:
>
> [local] test=*# select attrelid::regclass, attname from pg_attribute a join pg_class c on c.oid = attrelid where
attalign= 'd' and relkind = 'r' and attnotnull and attlen <> -1;
> attrelid │ attname
> ─────────────────┼──────────────
> pg_sequence │ seqstart
> pg_sequence │ seqincrement
> pg_sequence │ seqmax
> pg_sequence │ seqmin
> pg_sequence │ seqcache
> pg_subscription │ subskiplsn
> (6 rows)
>
> The pg_sequence fields evade trouble, because there's exactly eight bytes (two
> oids) before them.
Yes, we carefully did this when we ran into this the last time. See
<https://www.postgresql.org/message-id/flat/76ce2ca3-40f2-d291-eae2-17b599f29ba0%402ndquadrant.com#cf1313adff98e1d5e1ca789497898310>
and commit f3b421da5f4addc95812b9db05a24972b8fd9739.