The following bug has been logged online:
Bug reference: 5920
Logged by: Matyas Novak
Email address: logik(at)centrum(dot)cz
PostgreSQL version: 9.0.1
Operating system: linux
Description: SQL function are probably "overoptimized"
Details:
create table a(a integer);
create or replace function f1 (a varchar) returns void volatile language
plpgsql as
$$
begin
insert into a values(1);
end
$$;
create or replace function f2 () returns void volatile language sql as
$$
select f1(tmp) from (values ('aa'), ('bb')) _tmp(tmp);
$$;
select f2();
As a result, only one row appears in table a, although two should be
there...