Como você notou corretamente, você não pode ver as linhas modificadas no CTE no
SELECT principal . Este está documentado
:Então você deve usar
RETURNING . Acho que a maneira mais simples seria não usar uma função, mas executar
json_build_object na consulta principal e faça com que ela opere nos CTEs parents e children .