Re: proposal: jsonb_populate_array
Pavel Stehule <pavel.stehule@gmail.com>
From: Pavel Stehule <pavel.stehule@gmail.com>
To: jian he <jian.universality@gmail.com>
Cc: Chapman Flack <chap@anastigmatix.net>, Erik Rijkers <er@xs4all.nl>, Alvaro Herrera <alvherre@alvh.no-ip.org>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2023-08-15T05:59:05Z
Lists: pgsql-hackers
út 15. 8. 2023 v 5:12 odesílatel jian he <jian.universality@gmail.com> napsal: > \df jsonb_populate_record > List of functions > Schema | Name | Result data type | Argument data > types | Type > > ------------+-----------------------+------------------+---------------------+------ > pg_catalog | jsonb_populate_record | anyelement | anyelement, > jsonb | func > (1 row) > > manual: > > anyelement Indicates that a function accepts any data type. > > For the “simple” family of polymorphic types, the matching and deduction > rules work like this: > > Each position (either argument or return value) declared as anyelement > is allowed to have any specific actual data type, but in any given call > they must all be the same actual type. > > So jsonb_populate_record signature can handle cases like > jsonb_populate_record(anyarray, jsonb)? obviously this is a cast, it > may fail. > also if input is anyarray, so the output anyarray will have the same > base type as input anyarray. > It fails (what is expected - else be too strange to use function in name "record" for arrays) (2023-08-15 07:57:40) postgres=# select jsonb_populate_record(null::varchar[], '[1,2,3]'); ERROR: first argument of jsonb_populate_record must be a row type regards Pavel