function returning setof..select versus select * from - Mailing list pgsql-general

From Jeff Amiel
Subject function returning setof..select versus select * from
Date
Msg-id C17A452040EDB84AA7A10AEA334E3E1455D225@AD1
Whole thread Raw
List pgsql-general
What is the difference between:

select foo();
and
select * from foo();

Foo is defined as:

CREATE OR REPLACE FUNCTION foo()
  RETURNS SETOF integer AS
    'SELECT column from foo_table;'
  LANGUAGE 'sql' STABLE;

Explain shows difference...

explain select * from foo()
"Function Scan on foo  (cost=0.00..1.25 rows=1000 width=4)"

Explain select foo();
"Result  (cost=0.00..0.00 rows=1 width=0)"

They both return the same results..yet yield different plans...and
different speeds when using 'real' data.

Why come?



pgsql-general by date:

Previous
From: "Gurjeet Singh"
Date:
Subject: Re: Transactions within a function body
Next
From: "Frank Durstewitz, Emporis GmbH"
Date:
Subject: Re: Trigger disable for table