BUG #8516: Calling VOLATILE from STABLE function

From: dwayne(at)docketnavigator(dot)com
To: pgsql-bugs(at)postgresql(dot)org
Subject: BUG #8516: Calling VOLATILE from STABLE function
Date: 2013-10-09 20:58:46
Message-ID: E1VU0qE-0003bl-7o@wrigleys.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

The following bug has been logged on the website:

Bug reference: 8516
Logged by: Dwayne Towell
Email address: dwayne(at)docketnavigator(dot)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.

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Gabriel Ciubotaru 2013-10-10 09:17:39 Bit String expand bug
Previous Message nbuduroi 2013-10-09 17:35:11 BUG #8515: Random 'relation "..." does not exist'