IMMUTABLE break inlining simple SQL functions.

From: Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
To: PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: IMMUTABLE break inlining simple SQL functions.
Date: 2009-08-02 12:25:12
Message-ID: 162867790908020525q102b4b91o1d7110f49824ecb6@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hello

I though, so simple SQL functions should be inlined everywhere. When I
tested sample for recent discussion, I found so immutable flag breaks
inlining.

Is it bug?

postgres=# create or replace function foo(a int) returns int as $$
select $1+1$$ language sql STRICT IMMUTABLE;
CREATE FUNCTION
Time: 2,723 ms
postgres=# SELECT * FROM pg_stat_user_functions ;
funcid | schemaname | funcname | calls | total_time | self_time
--------+------------+----------+-------+------------+-----------
16450 | public | foo | 3 | 0 | 0
(1 row)

postgres=# SELECT foo(10);
foo
-----
11
(1 row)

funcid | schemaname | funcname | calls | total_time | self_time
--------+------------+----------+-------+------------+-----------
16450 | public | foo | 4 | 0 | 0
(1 row)

postgres=# create or replace function foo(a int) returns int as $$
select $1+1$$ language sql STRICT;
CREATE FUNCTION
Time: 3,716 ms
postgres=# SELECT foo(11);
foo
-----
12
(1 row)

Time: 1,611 ms
postgres=# SELECT * FROM pg_stat_user_functions ; funcid | schemaname
| funcname | calls | total_time | self_time
--------+------------+----------+-------+------------+-----------
16450 | public | foo | 4 | 0 | 0
(1 row)

regards
Pavel Stehule

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Robert Haas 2009-08-02 15:31:55 Re: ALTER TABLE ... ALTER COLUMN ... SET DISTINCT
Previous Message Joe Conway 2009-08-02 01:29:55 Re: [PATCH] Implement (and document, and test) has_sequence_privilege()