> 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.
Chris