Jon Smark <jon.smark@yahoo.com> writes:
> create type page_t AS
> (
> total int4,
> users user_t[]
> );
> create function get_page ()
> returns page_t
> language plpgsql as
> $$
> declare
> _page page_t;
> begin
> _page.total := select count (*) from users;
> select * into _page.users from users limit 10;
> return _page;
> end
> $$;
That is certainly not going to work: that select does not produce an
array, it produces a column of user_t (of which SELECT INTO is only
gonna take the first, anyway).
Untested, but I think you'd have better results with
_page.users := array(select users from users limit 10);
It'd also be smart to get rid of user_t and rely directly on the "users"
rowtype associated with the users table.
regards, tom lane