Uso de tipos de retorno personalizados em um loop FOR no plpgsql

O código a seguir que eu uso retorna um número inteiro1:

CREATE TYPE my_test AS (
   foo Integer
  );

CREATE FUNCTION foo_out() 
  RETURNS SETOF Integer AS
$ 
BEGIN
RETURN QUERY
SELECT 1 as foo;
END
$
LANGUAGE plpgsql;

CREATE FUNCTION foo1()
  RETURNS SETOF my_test
AS $
DECLARE
    x my_test;
BEGIN
    FOR x IN    
        SELECT foo_out()
    LOOP     
        RETURN NEXT x;
    END LOOP;
END;
$
LA,NGUAGE 'plpgsql';

select * from foo1();

Mas por que o mesmo código retorna:

ERROR:  invalid input syntax for integer: (1)

se eu alterar o tipo de retorno para:

CREATE FUNCTION foo_out() 
  RETURNS SETOF my_test 

O que também deve ser uminteger!? Pode ser que o sistema seja diferente entre o tipo inteiro e um tipo personalizado que inclua um número inteiro. O que deve ser alterado para que o uso de tipos personalizados seja possível aqui?

questionAnswers(1)

yourAnswerToTheQuestion