Assuming I have a function like:
CREATE FUNCTION f () RETURNS SETOF INTEGER LANGUAGE PLPgSQL AS
RETURN QUERY SELECT * FROM t;
And I call:
SELECT * FROM f LIMIT 10;
Is Postgres smart enough to ensure that the function won't do a full scan of the table and then discard all but ten results?
I'm trying to work out if i can structure things so that i can reuse most of the functions for different queries by progressively layering limits, offsets, etc.