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.


Reply via email to