Thread: BUG #17206: the function array_cat(anyarray, anyarray) does not exist
BUG #17206: the function array_cat(anyarray, anyarray) does not exist
From
PG Bug reporting form
Date:
The following bug has been logged on the website: Bug reference: 17206 Logged by: Edouard HIBON Email address: edouard.hibon@free.fr PostgreSQL version: 14.0 Operating system: windows 10 Description: Trying to create the following aggregate function : CREATE AGGREGATE array_accum (anyarray) ( sfunc = array_cat, stype = anyarray, initcond = '{}' ); I get the ERROR : the function array_cat(anyarray, anyarray) does not exist, SQL state: 42883 whereas this works in PostGreSQL 13.4
Re: BUG #17206: the function array_cat(anyarray, anyarray) does not exist
From
"David G. Johnston"
Date:
On Thu, Sep 30, 2021 at 2:51 PM PG Bug reporting form <noreply@postgresql.org> wrote:
The following bug has been logged on the website:
Bug reference: 17206
Logged by: Edouard HIBON
Email address: edouard.hibon@free.fr
PostgreSQL version: 14.0
Operating system: windows 10
Description:
Trying to create the following aggregate function :
CREATE AGGREGATE array_accum (anyarray)
(
sfunc = array_cat,
stype = anyarray,
initcond = '{}'
);
I get the ERROR : the function array_cat(anyarray, anyarray) does not exist,
SQL state: 42883
whereas this works in PostGreSQL 13.4
You may find this commit to be illuminating. Work was done in this area for v14.
David J.
"David G. Johnston" <david.g.johnston@gmail.com> writes: > On Thu, Sep 30, 2021 at 2:51 PM PG Bug reporting form < > noreply@postgresql.org> wrote: >> I get the ERROR : the function array_cat(anyarray, anyarray) does not >> exist, > You may find this commit to be illuminating. Work was done in this area > for v14. > https://github.com/postgres/postgres/commit/97f73a978fc1aca59c6ad765548ce0096d95a923 This one might be more so: https://git.postgresql.org/gitweb/?p=postgresql.git&a=commitdiff&h=9e38c2bb50 Also see the very first item in the v14 compatibility notes: User-defined objects that reference certain built-in array functions along with their argument types must be recreated (Tom Lane) Specifically, array_append(), array_prepend(), array_cat(), array_position(), array_positions(), array_remove(), array_replace(), and width_bucket() used to take anyarray arguments but now take anycompatiblearray. Therefore, user-defined objects like aggregates and operators that reference those array function signatures must be dropped before upgrading, and recreated once the upgrade completes. regards, tom lane
Thank you Tom and David for your clear answer, I'm going to read more carefully the v14 compatibility notes !
BR
Edouard
BR
Edouard
Le 01/10/2021 à 01:52, Tom Lane a écrit :
"David G. Johnston" <david.g.johnston@gmail.com> writes:On Thu, Sep 30, 2021 at 2:51 PM PG Bug reporting form < noreply@postgresql.org> wrote:I get the ERROR : the function array_cat(anyarray, anyarray) does not exist,You may find this commit to be illuminating. Work was done in this area for v14. https://github.com/postgres/postgres/commit/97f73a978fc1aca59c6ad765548ce0096d95a923This one might be more so: https://git.postgresql.org/gitweb/?p=postgresql.git&a=commitdiff&h=9e38c2bb50 Also see the very first item in the v14 compatibility notes: User-defined objects that reference certain built-in array functions along with their argument types must be recreated (Tom Lane) Specifically, array_append(), array_prepend(), array_cat(), array_position(), array_positions(), array_remove(), array_replace(), and width_bucket() used to take anyarray arguments but now take anycompatiblearray. Therefore, user-defined objects like aggregates and operators that reference those array function signatures must be dropped before upgrading, and recreated once the upgrade completes. regards, tom lane
Hi,
---------- Původní e-mail ----------
Od: Tom Lane <tgl@sss.pgh.pa.us>
Komu: David G. Johnston <david.g.johnston@gmail.com>
Kopie: edouard.hibon@free.fr, PostgreSQL mailing lists <pgsql-bugs@lists.postgresql.org>
Datum: 11. 8. 2022 12:02:17
Předmět: Re: BUG #17206: the function array_cat(anyarray, anyarray) does not exist
anycompatible didn't accept anyarray. Example from system catalogs:
SELECT most_common_freqs[
array_position(most_common_vals::text::text[],'range_ops'::text)
] * 100 AS occurrence_percent
FROM pg_stats
WHERE schemaname='pg_catalog' AND tablename ='pg_opfamily' AND attname='opfname';
occurrence_percent
--------------------
2.7397260069847107
must be cast to text::text[] without cast:
ERROR: function array_position(anyarray, text) does not exist
Is bug that function with anycompatiblearray didn't accept anyarray data type?
regards, David Turoň
---------- Původní e-mail ----------
Od: Tom Lane <tgl@sss.pgh.pa.us>
Komu: David G. Johnston <david.g.johnston@gmail.com>
Kopie: edouard.hibon@free.fr, PostgreSQL mailing lists <pgsql-bugs@lists.postgresql.org>
Datum: 11. 8. 2022 12:02:17
Předmět: Re: BUG #17206: the function array_cat(anyarray, anyarray) does not exist
"David G. Johnston" <david.g.johnston@gmail.com> writes:
> On Thu, Sep 30, 2021 at 2:51 PM PG Bug reporting form <
> noreply@postgresql.org> wrote:
>> I get the ERROR : the function array_cat(anyarray, anyarray) does not
>> exist,
> You may find this commit to be illuminating. Work was done in this area
> for v14.
> https://github.com/postgres/postgres/commit/97f73a978fc1aca59c6ad765548ce0096d95a923
This one might be more so:
https://git.postgresql.org/gitweb/?p=postgresql.git&a=commitdiff&h=9e38c2bb50
Also see the very first item in the v14 compatibility notes:
User-defined objects that reference certain built-in array functions
along with their argument types must be recreated (Tom Lane)
Specifically, array_append(), array_prepend(), array_cat(),
array_position(), array_positions(), array_remove(), array_replace(),
and width_bucket() used to take anyarray arguments but now take
anycompatiblearray. Therefore, user-defined objects like aggregates
and operators that reference those array function signatures must be
dropped before upgrading, and recreated once the upgrade completes.
regards, tom lane