¿La función Postgres devuelve un registro mientras tengo muchos registros?

Tengo muchos registros que devuelve mi consulta simple, pero cuando uso la función solo me da el primer registro,

en primer lugar creo mi propio tipo de datos usando,

CREATE TYPE my_type (usr_id integer , name varchar(30));

y mi función es

CREATE OR REPLACE function test() returns my_type as $
    declare rd varchar := '21';
    declare personphone varchar := NULL;
    declare result my_type;
    declare SQL VARCHAR(300):=null; 
DECLARE
    radiophone_clause text = '';

BEGIN        
    IF rd IS NOT NULL then
        radiophone_clause = 'and pp.radio_phone = '|| quote_literal(rd);
    END IF;

    IF personphone IS NOT NULL then      
        radiophone_clause = radiophone_clause|| 'and pp.person_phone = '|| quote_literal(personphone);
    END IF;
    radiophone_clause = substr(radiophone_clause, 5, length(radiophone_clause)- 4);

     EXECUTE format('select pt.id,pt.name from product_template pt inner join product_product pp on pt.id=pp.id where %s ;', radiophone_clause) into result.id,result.name ;
    return result;
END;
$ LANGUAGE plpgsql;

en esta función estoy devolviendo my_type que devuelve solo la primera fila cómo devolver más de una fila,

Respuestas a la pregunta(2)

Su respuesta a la pregunta