Re: concurrency in stored procedures

From: "Merlin Moncure" <mmoncure(at)gmail(dot)com>
To: "Ottavio Campana" <ottavio(at)campana(dot)vi(dot)it>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: concurrency in stored procedures
Date: 2007-03-23 21:22:32
Message-ID: b42b73150703231422n2ea5dda5wb1edf5dfd1aa0b2d@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On 3/23/07, Ottavio Campana <ottavio(at)campana(dot)vi(dot)it> wrote:
> Ottavio Campana wrote:
> > What would you to in order to be sure that one function or a part of it
> > is atomically executed?
>
> would it be correct something like? or how would you write this?
>
> create or replace function my_function () returs integer as
> $$
> declare
> ...
> status boolean;
> ...
> begin
> ...
> loop
> begin
> set transaction isolation level serializable;
> ...
> do_something();
> ...
> status := true;
> exception serialization_failure
> status := false;
> end;
>
> if status then exit;
> end loop;
> ...
> return 0;
> end
> $$ language plpgsql

you can also use advisory locks if you want to implement 'critical
section' inside a plpgsql function.

see:
http://merlinmoncure.blogspot.com/2006/12/advisory-locks-part-2.html

merlin

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Ottavio Campana 2007-03-23 21:42:05 Re: concurrency in stored procedures
Previous Message Tom Lane 2007-03-23 21:19:54 Re: Insert fail: could not open relation with OID 3221204992