Joe Conway and I have just committed some changes in the internal
representation of Postgres arrays: an element-type-OID field is added to
the array header, and alignment calculations are now done the same way
as in ordinary tuple storage, instead of taking shortcuts. I believe
that these changes need to be reflected into the intarray, ltree, and
intagg contrib modules.
intarray and ltree both seem to be mapping their own declarations onto
arrays using largely-similar code. But while intarray fails its
regression test, I find ltree still passes. So I'm confused about what
that code is really doing and don't want to touch it.
I tried to fix intagg, but since there is no regression test for it
I'm unsure whether it's okay.
Could you folks take a look at CVS tip and see what changes are needed,
if any?
In the longer run, it might be possible to improve these routines to be
array-type-polymorphic using the new features. But with the 7.3 beta
date nearly upon us, I'd counsel first making the existing functionality
work again...
regards, tom lane