"petrum@gmail.com" <petrum@gmail.com> writes:
> In file postgresql-9.4.4/src/backend/utils/adt/format_type.c
> function format_type_internal line 159, shouldn’t be used
> array_base_type instead of type_oid?
IIRC, that was intentional. Supposing there's a pg_type row with
a corrupted typelem value, it's more useful to point at the bogus
row than to report the junk value with no context. I suppose you
could argue that it should be more like
elog(ERROR, "cache lookup failed for type %u (typelem of %u)", array_base_type, type_oid);
regards, tom lane