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.
