It is only partially identical - I would to use cache for array_offset, but it is not necessary for array_offsets .. depends how we would to modify current API to support externally cached data.
Externally cached data?
Some from these functions has own caches for minimize access to typcache (array_map, array_cmp is example). And in first case, I am trying to push these information from fn_extra, in second case I don't do it, because I don't expect a repeated call (and I am expecting so type cache will be enough).
You actually do caching via fn_extra in both case and I think that's the correct way, and yes that part can be moved common function.
I also see that the documentation does not say what is returned by array_offset if nothing is found (it's documented in code but not in sgml).
From:
Michael Paquier Date: Subject:
Re: Enforce creation of destination folders for source
files in pg_regress (Was: pg_regress writes into source tree)