Como notó correctamente, no puede ver las filas modificadas en el CTE en el SELECT
principal . Este está documentado
:
Entonces deberías usar RETURNING
.
Supongo que la forma más sencilla sería no usar una función, sino realizar json_build_object
en la consulta principal y hacer que opere en los CTE parents
y children
.