Re: functions marked STABLE not allowed to do INSERT - Mailing list pgsql-hackers

From Jaime Casanova
Subject Re: functions marked STABLE not allowed to do INSERT
Date
Msg-id c2d9e70e0511141145o42371f30ta97a360dd76dbff5@mail.gmail.com
Whole thread Raw
In response to Re: functions marked STABLE not allowed to do INSERT  (Tino Wildenhain <tino@wildenhain.de>)
Responses Re: functions marked STABLE not allowed to do INSERT  (Tino Wildenhain <tino@wildenhain.de>)
List pgsql-hackers
On 11/14/05, Tino Wildenhain <tino@wildenhain.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 ;)


pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: 8.0 -> 8.1 dump duplicate key problem?
Next
From: Tino Wildenhain
Date:
Subject: Re: functions marked STABLE not allowed to do INSERT