Re: Two features left - Mailing list pgsql-general

From Jean-Luc Lachance
Subject Re: Two features left
Date
Msg-id 3DE54D91.23B9F79D@nsd.ca
Whole thread Raw
In response to Re: Two features left  (Bruce Momjian <pgman@candle.pha.pa.us>)
Responses Re: Two features left  (Bruce Momjian <pgman@candle.pha.pa.us>)
List pgsql-general
Jon,

What I would like to be able to do is within a loop for example, commit
each iteration.


Jon Swinth wrote:
>
> Hmm... I'm not quite sure what you mean by function start point.  It has been
> a while since I did any embeded DB code.  Everything now is through a JDBC
> interface using standard SQL calls.
>
> It sounds like you are wanting to be able to place a BEGIN statement within a
> function call to make sure the calls within the function are in a transaction
> and to be able to abort to that point.  The issue I see with doing your
> nested transactions vs. savepoint is that you would have to invent a way to
> mark the end of the sub-transaction without a commit/rollback.  Here is an
> example:
>
> BEGIN;
> UPDATE...
> function_a(){
>   BEGIN
>   UPDATE
>   function_b() {
>     BEGIN
>     UPDATE
>   } //end function_b
>   UPDATE
>   ABORT
> } //end function_a
> UPDATE
> COMMIT;
>
> How does the system know that the ABORT in the second half of function_a
> should rollback to the BEGIN in function_a rather than the BEGIN in
> function_b?  The other issue I have seen is where you want to overwrite a
> point, which you can usually do with a SAVEPOINT structure.  This is
> especially usefull in a looping structure where you want to be albe to roll
> out one loop.
>
> BEGIN;
> UPDATE...
> function_a(){
>   UPDATE
>   SAVEPOINT a ;
>   LOOP
>   function_b() {
>     SAVEPOINT b;
>     UPDATE
>     UPDATE
>     UPDATE
>     IF error ROLLBACK TO b ;
>   } //end function_b
>   UPDATE
>   SAVEPOINT a ;
>   END LOOP;
> } //end function_a
> UPDATE
> COMMIT;
>
> In this case the function_b may be something that tries to place something
> somewhere and has multiple updates.  If one of the updates fails then you
> want to be able to rollback to the beginning loop value and let the next
> iteration of the loop try out the next location.  This type of structure is
> especially usefull when there are many simultanious threads going on doing a
> simular operation.
>
> On Wednesday 27 November 2002 01:45 pm, Jean-Luc Lachance wrote:
> > Jon,
> >
> > That is all fine and dandy, but aren't function start point candidate
> > for a rollback to point?
> > A transaction is currently implicitely started on function call, and we
> > get into the same problem as with nested transaction when a function
> > calls another one.
> >
> > Don't get me wrong, I thing SAVEPOINT and ROLLBACK TO is a great idea,
> > but nested transaction is needed.
> >
> > JLL
>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: if posting/reading through Usenet, please send an appropriate
> subscribe-nomail command to majordomo@postgresql.org so that your
> message can get through to the mailing list cleanly

pgsql-general by date:

Previous
From: Zengfa Gao
Date:
Subject: Shared library
Next
From: Bruce Momjian
Date:
Subject: Re: Two features left