Why does this:

create or replace function dummy() returns double precision as $$
SELECT random() $$
COST 777;
explain select dummy();

return this:

Result  (cost=0.00..0.01 rows=1 width=0)

and not a cost of 777?

1 Answer 1


I believe the costs refer to different units of measurement. The cost when used in functions is the estimated execution cost in units of cpu_operator_cost, whereas the EXPLAIN plan costs are units of disk page fetches (seq_page_cost).

For function cost details, see http://www.postgresql.org/docs/current/static/sql-createfunction.html

For EXPLAIN plan costs, see http://www.postgresql.org/docs/current/static/using-explain.html

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.