> In my case, m_new_data is actually a table row type rather than plain > "record". The row is passed on to another function which calculates the > altered columns and logs the changes.
In my experience, to specify composite-typed receiver as one element of INTO list, it need to be column of composite variable. CREATE TABLE t (a int, b int, c int); CREATE TYPE wrap AS (v t); DO $DO$ DECLARE s text; w wrap; BEGIN INSERT INTO t VALUES (1, 2, 3) RETURNING 'text', t INTO s, w.v; RAISE '%, %', s, w.v; END; $DO$; https://dbfiddle.uk/e5Q4Fj6l