Som du har bemærket korrekt, kan du ikke se rækker ændret i CTE'en i hoved-SELECT . Denne er dokumenteret
:
Så du bør bruge RETURNING .
Jeg tror den enkleste måde ville være ikke at bruge en funktion, men at udføre json_build_object i hovedforespørgslen og få den til at fungere på CTE'ernes parents og children .