Re: BUG #8516: Calling VOLATILE from STABLE function
От | Bruce Momjian |
---|---|
Тема | Re: BUG #8516: Calling VOLATILE from STABLE function |
Дата | |
Msg-id | 20131010225931.GZ7092@momjian.us обсуждение исходный текст |
Ответ на | BUG #8516: Calling VOLATILE from STABLE function (dwayne@docketnavigator.com) |
Ответы |
Re: BUG #8516: Calling VOLATILE from STABLE function
|
Список | pgsql-bugs |
On Wed, Oct 9, 2013 at 08:58:46PM +0000, dwayne@docketnavigator.com wrote: > The following bug has been logged on the website: > > Bug reference: 8516 > Logged by: Dwayne Towell > Email address: dwayne@docketnavigator.com > PostgreSQL version: 9.2.4 > Operating system: CentOS > Description: > > Why doesn't PostgreSQL give a warning when calling a volatile function from > a stable function? > > > For example: > CREATE TABLE x (val double); > > > CREATE FUNCTION g() RETURNS boolean AS $$ > INSERT INTO x SELECT rand() RETURNING val>0.5; > $$ LANGUAGE SQL VOLATILE; > > > CREATE FUNCTION f() RETURNS boolean AS $$ > SELECT g(); -- this is where the stability-violation happens > $$ LANGUAGE SQL STABLE; -- this is a lie > > > According to the documentation, f() should be marked VOLATILE also, since > calling f() produces side effects. PostgreSQL does not give a warning (or > better yet, an error); I think it should. I think the answer is that function authors are required to prevent functions they mark as STABLE from calling VOLATILE functions. -- Bruce Momjian <bruce@momjian.us> http://momjian.us EnterpriseDB http://enterprisedb.com + Everyone has their own god. +
В списке pgsql-bugs по дате отправления: