Alvaro Herrera wrote: > On Thu, Jun 17, 2004 at 10:01:32AM +0800, Christopher Kings-Lynne wrote: > > >And consider this case: > > > > > > BEGIN; > > > ... > > > SAVEPOINT x; > > > SELECT func_call(); > > > SELECT func_call(); > > > COMMIT; > > > > > >Now if func_call has a savepoint, it is really nested because it can't > > >know whether the savepoint X will be used to roll back, so its status is > > >dependent on the status of X. Now, if we used savepoints in func_call, > > >what happens in the second function call when we define a savepoint with > > >the same name? I assume we overwrite the original, but using nested > > >transaction syntax seems much clearer. > > > > It also seems in this example that func_call() probably shouldn't have > > permission to rollback to savepoint x? Otherwise it would get...weird. > > I don't think we should explicitly forbid it. I think it should be > forbidden to close the outermost transaction inside a function (else the > function would not be able to terminate correctly), but for levels > before that one it'd be OK.
True. I see no reason to disallow it. Alvaro, you mentioned savepoint levels, and I assume this to work around cases where they would need the nested transactions that we are implementing. -- Bruce Momjian | http://candle.pha.pa.us [EMAIL PROTECTED] | (610) 359-1001 + If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square, Pennsylvania 19073 ---------------------------(end of broadcast)--------------------------- TIP 4: Don't 'kill -9' the postmaster