=?UTF-8?Q?St=C3=A9phane_Klein?= <contact@xxxxxxxxxxxxxxxxxxx> writes: > **Question:** do you know a method like json_populate_record ( > https://www.postgresql.org/docs/13/functions-json.html), which allows > creating a `ROW` with named field notation without using a json format? You mean you want to give the field names explicitly in the expression? The closest thing I can think of is to make a constructor function and invoke it with named-argument notation: regression=# CREATE TYPE contact AS ( regression(# firstname VARCHAR, regression(# lastname VARCHAR regression(# ); CREATE TYPE regression=# create function make_contact(firstname varchar, lastname varchar) regression-# returns contact as 'select row(firstname, lastname)::contact' regression-# language sql; CREATE FUNCTION regression=# select make_contact(firstname => 'John', lastname => 'Doe'); make_contact -------------- (John,Doe) (1 row) A bit tedious to set up, but it would have some advantages, eg you could provide default values. regards, tom lane