Разделить возвращенную функцией запись на несколько столбцов

В базовом руководстве по функциям Postgres есть пример сOUT параметры вроде так:

create or replace function hi_lo(a numeric, 
                                 b numeric, 
                                 c numeric, 
                                 OUT hi numeric, 
                                 OUT lo numeric)
as $$
begin
hi := greatest(a, b, c);
lo := least(a, b, c);
end; $$
language plpgsql;

Тогда результаты выглядят как

select hi_lo(2, 3, 4);
-- returns one column, "hi_lo" with value "(4, 2)".

select * from hi_lo(2, 3, 4);
-- returns two columns, "hi" / 4 and "lo" / 2.

Но предположим, что вы хотите выполнить функцию для столбцов, полученных в результате объединения, и что у вас нет доступа для изменения функции или использования альтернативной функции? Например, используя некоторые игрушечные данные:

select hi_lo(a.actor_id, length(a.name), ma.movie_id) 
from 
    actors a 
join 
    movies_actors ma 
on 
    a.actor_id = ma.movie_id 
limit 10;

возвращает результаты в одном столбце "hi_lo" с двумя значениями кортежа.

Завершение запроса в скобках и попыткаselect * из него не меняется формат вывода. Так

select *
from (
    select hi_lo(a.actor_id, length(a.name), ma.movie_id) 
    from 
        actors a 
    join 
        movies_actors ma 
    on 
        a.actor_id = ma.movie_id 
    limit 10;
) rr

не влияет на форму результата.

Следующая попытка приводит к ошибке «подзапрос должен возвращать только один столбец»

select (
    select * from hi_lo(a.actor_id, length(a.name), ma.movie_id)
) 
from 
    actors a 
join 
    movies_actors ma 
on
    a.actor_id = ma.movie_id 
limit 10;

Наконец-то я тоже попробовалunnest но это дает ошибку типа аргумента, поскольку значения кортежа не рассматриваются как массивы.

Как вы можете получить несколько столбцов в выводе, когда вы не можете переместить оценку функции вfrom раздел?