\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