I said:
> Although it's inefficient to declare NAMEDATALEN as not a multiple of 4
> (because of alignment considerations --- the space will just be wasted
> as pad bytes, so you might as well use it), I don't offhand know why it
> wouldn't work.
One possible theory is that if NAMEDATALEN isn't a multiple of
sizeof(int), the compiler's idea of sizeof(NameData) will probably be
NAMEDATALEN rounded up to the next multiple of sizeof(int). However,
I still don't see exactly how that breaks anything, with the possible
exception of pg_language tuple layout --- but pg_language layout
problems wouldn't give rise to a failure during bootstrap AFAICS.
So I still don't know what the constraint mechanism really is.
BTW, I'm assuming here that alignof(int) is 4 on your platform; is it?
regards, tom lane