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  ("Dwayne Towell" <dwayne@docketnavigator.com>)
Список 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 по дате отправления:

Предыдущее
От: Sergey Konoplev
Дата:
Сообщение: Re: Completely broken replica after PANIC: WAL contains references to invalid pages
Следующее
От: Bruce Momjian
Дата:
Сообщение: Re: BUG #8467: Slightly confusing pgcrypto example in docs