Wyrażenia po select musi ewaluować do pojedynczej wartości. Od jsonb_to_recordset zwraca zestaw wierszy i kolumn, nie możesz ich tam użyć.
Rozwiązaniem jest cross join lateral , który pozwala rozwinąć jeden wiersz na wiele wierszy za pomocą funkcji. To daje pojedyncze wiersze, które select może działać. Na przykład:
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'
Pamiętaj, że #>> operator
zwraca typ text i #> operator zwraca typ jsonb . Jako jsonb_to_recordset oczekuje jsonb jako pierwszy parametr używam #> .
Zobacz, jak działa na rextester.com