Обсуждение: Planner question regarding functions
Hi all;
I suspect I know what the answer here is, but I thought I would ask
anyway. How transparent are SQL language functions from the planner's
perspective? For example if I create a table:
CREATE TABLE proof_of_concept(
poc_id serial primary key,
testing text
);
and a function:
CREATE FUNCTION search_poc() RETURNS setof proof_of_concept AS '
SELECT * FROM proof_of_concept
' LANGUAGE SQL;
Then will the planner be able to use indexes if I do:
SELECT * FROM search_poc() WHERE poc_id = 16023
I am assuming it won't. But can the planner "see inside" the SQL
language functions, thus expanding them similar to a view, or will this
force a sequential scan?
Best Wishes,
Chris Travers
On Mon, Dec 08, 2003 at 21:33:48 +0800, Chris Travers <chris@travelamericas.com> wrote: > > I suspect I know what the answer here is, but I thought I would ask > anyway. How transparent are SQL language functions from the planner's > perspective? For example if I create a table: In 7.4 simple SQL functions are inlined and work a lot like macros. I don't know if set returning functions are able to be inlined.
Bruno Wolff III <bruno@wolff.to> writes:
> Chris Travers <chris@travelamericas.com> wrote:
>> I suspect I know what the answer here is, but I thought I would ask
>> anyway. How transparent are SQL language functions from the planner's
>> perspective? For example if I create a table:
> In 7.4 simple SQL functions are inlined and work a lot like macros.
> I don't know if set returning functions are able to be inlined.
They are not. I suppose that a function consisting of just one SELECT
could be expanded in-line if it appears in FROM ... but it's not clear
what that accomplishes that you couldn't do just as well with a view.
regards, tom lane