On Wed, Nov 04, 2020 at 07:43:51PM -0500, Tom Lane wrote: > crake is showing xversion upgrade failures since 9e38c2bb50: > > pg_restore: error: could not execute query: ERROR: function > array_cat(anyarray, anyarray) does not exist > Command was: CREATE AGGREGATE "public"."array_cat_accum"("anyarray") ( > SFUNC = "array_cat", > STYPE = "anyarray", > INITCOND = '{}' > ); > > As was discussed in the thread leading up to that commit, modifying the > signature of array_cat and friends could break user-defined operators > and aggregates based on those functions. It seems to me that the > usability gain from this change is worth that cost, but it is causing > an issue for xversion tests.
I upgraded an internal DB to v14b1, but it took several tries, since there were errors during pg_restore regarding aggregates using polymorphic functions anyarray, which are now anycompatiblearray. I succeeded in upgrading after dropping our aggregates. I have a backup from the v13 DB, and it restores okay on v13. However it fails with the same errors when restoring into v14. I think this was all known, so I'm just adding a data point. It's be easy enough to replace our "anyarrays" with "anycompatiblearrays". But I think this should be called out as an incompatible change in the release notes. pg_restore: error: could not execute query: ERROR: function array_append(anyarray, anyelement) does not exist Command was: CREATE AGGREGATE public.array_accum(anyelement) ( SFUNC = array_append, STYPE = anyarray, INITCOND = '{}', PARALLEL = safe ); pg_restore: error: could not execute query: ERROR: function array_append(anyarray, anyelement) does not exist Command was: CREATE AGGREGATE public.pdp_context_count(anyelement) ( SFUNC = array_append, STYPE = anyarray, INITCOND = '{}', FINALFUNC = public._final_pdp_context_count, PARALLEL = safe ); pg_restore: error: could not execute query: ERROR: function array_append(anyarray, anyelement) does not exist Command was: CREATE AGGREGATE public.ts_mode(anyelement) ( SFUNC = array_append, STYPE = anyarray, INITCOND = '{}', FINALFUNC = public._final_mode ); -- Justin