Re: functions marked STABLE not allowed to do INSERT

From: Jaime Casanova <systemguards(at)gmail(dot)com>
To: Tino Wildenhain <tino(at)wildenhain(dot)de>
Cc: Robert Treat <xzilla(at)users(dot)sourceforge(dot)net>, pgsql-hackers(at)postgresql(dot)org
Subject: Re: functions marked STABLE not allowed to do INSERT
Date: 2005-11-14 19:45:53
Message-ID: c2d9e70e0511141145o42371f30ta97a360dd76dbff5@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 11/14/05, Tino Wildenhain <tino(at)wildenhain(dot)de> wrote:
> Am Montag, den 14.11.2005, 13:29 -0500 schrieb Robert Treat:
> > On Monday 14 November 2005 10:02, Tino Wildenhain wrote:
> > > New in 8.1 it seems functions marked STABLE are
> > > not allowed to have any INSERT statement in them.
> > >
> >
> > Try hiding your inserts in seperate volitle sql function that you can select
> > inside your stable function. I think the planner won't be smart enough to
> > realize what your doing to it.
>
>
> Now this is really a bug:
>
> =# CREATE OR REPLACE function foo(int) RETURNS int as $$
> $# DECLARE f ALIAS FOR $1;
> $# BEGIN
> $# RETURN (random()*f)::int;
> $# END;
> $# $$ LANGUAGE plpgsql STABLE;
>
> =# SELECT foo(10);
> foo
> -----
> 6
> (1 row)
>
> Instead of screaming here, where I use a VOLATILE
> function in my STABLE function which could really
> be dangerous, it just works.
>

stable functions must show an stable image of the database, but if you
start to do insertions, deletions and so how stable the image is?

now, i don't like the behaviour of letting call volatile functions
inside immutable/stable ones... but some people use it to do what they
think is good...

if you know you can call volatile functions from stable ones maybe you
asked enough or read enough to actually know what you are doing...

but if you simply put inserts in your stable functions and expect to
work, maybe you are not reading enough... you can ask to yourself, am
i reading enough to actually know what am i doing?

conclusion: think in it as a netsafe for novices, if you think you are
expert enough take the net off (calling the volatile functions)

--
regards,
Jaime Casanova
(DBA: DataBase Aniquilator ;)

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2005-11-14 19:51:09 Re: 8.0 -> 8.1 dump duplicate key problem?
Previous Message Merlin Moncure 2005-11-14 19:44:23 Re: 8.0 -> 8.1 dump duplicate key problem?