Adjusting a mode function for the deprecation of anyarray

From: Wells Oliver <wells(dot)oliver(at)gmail(dot)com>
To: pgadmin-support(at)postgresql(dot)org
Subject: Adjusting a mode function for the deprecation of anyarray
Date: 2023-01-14 21:14:56
Message-ID: CAOC+FBUf5ZNSJpN58GbF1R1-N=vazKwfz4javrqSiP-sOjpWeA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgadmin-support

We have had and used this basic dumb useful aggregate in PG 13 and earlier:

CREATE OR REPLACE FUNCTION _final_mode(anyarray)
RETURNS anyelement AS
$BODY$
SELECT a
FROM unnest($1) a
GROUP BY 1
ORDER BY COUNT(1) DESC, 1
LIMIT 1;
$BODY$
LANGUAGE sql IMMUTABLE;

CREATE AGGREGATE mode(anyelement) (
SFUNC=array_append,
STYPE=anyarray,
FINALFUNC=_final_mode,
INITCOND='{}'
);

I can't seem to figure out how to adjust the mode(anyelement) bit now for
PG 14 and the loss of anyarray. Changing STYPE to anyelement yields
"function array_append(anyelement, anyelement) does not exist" and changing
it to anycompatiblearray yields:

ERROR: cannot determine transition data type
DETAIL: A result of type anycompatiblearray requires at least one input of
type anycompatible, anycompatiblearray, anycompatiblenonarray,
anycompatiblerange, or anycompatiblemultirange.

What's the obvious thing I am missing here? Thank you.

--
Wells Oliver
wells(dot)oliver(at)gmail(dot)com <wellsoliver(at)gmail(dot)com>

Responses

Browse pgadmin-support by date

  From Date Subject
Next Message Aditya Toshniwal 2023-01-16 05:22:17 Re: Adjusting a mode function for the deprecation of anyarray
Previous Message Stephen Todd Morrow 2023-01-12 19:46:45 RE: pgAdmin error with new PG15 servers: argument of type 'Response' is not iterable--RESOLVED