Som du märkte korrekt kan du inte se rader modifierade i CTE i huvudet SELECT . Denna är dokumenterad
:
Så du bör använda RETURNING .
Jag antar att det enklaste sättet skulle vara att inte använda en funktion, utan att utföra json_build_object i huvudfrågan och få den att fungera på CTE:s parents och children .