As expressões após
select deve avaliar para um único valor. Desde jsonb_to_recordset retorna um conjunto de linhas e colunas, você não pode usá-lo lá. A solução é uma
cross join lateral , que permite expandir uma linha em várias linhas usando uma função. Isso fornece linhas únicas que select pode agir. Por exemplo:select *
from journal j
cross join lateral
jsonb_to_recordset(j.data#>'{context, data, files}') as d(id int, name text)
where j.id = 'ap32bbofopvo7pjgo07g'
Observe que o
#>> operador
retorna o tipo text , e o #> operador retorna o tipo jsonb . Como jsonb_to_recordset espera jsonb como seu primeiro parâmetro estou usando #> . Veja em rextester.com