Re: functions marked STABLE not allowed to do INSERT

Поиск
Список
Период
Сортировка
От Jaime Casanova
Тема Re: functions marked STABLE not allowed to do INSERT
Дата
Msg-id c2d9e70e0511141145o42371f30ta97a360dd76dbff5@mail.gmail.com
обсуждение исходный текст
Ответ на Re: functions marked STABLE not allowed to do INSERT  (Tino Wildenhain <tino@wildenhain.de>)
Ответы Re: functions marked STABLE not allowed to do INSERT  (Tino Wildenhain <tino@wildenhain.de>)
Список 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 по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: 8.0 -> 8.1 dump duplicate key problem?
Следующее
От: Tino Wildenhain
Дата:
Сообщение: Re: functions marked STABLE not allowed to do INSERT