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