From: | Phil Frost <phil(at)macprofessionals(dot)com> |
---|---|
To: | Michael Cochez <michaelcochez(at)yahoo(dot)com> |
Cc: | pgsql-docs(at)postgresql(dot)org |
Subject: | Re: error in documentation? |
Date: | 2007-09-24 14:15:57 |
Message-ID: | 1375DFC2-C35B-4B89-B26D-4031C0E14E79@macprofessionals.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-docs |
On Sep 24, 2007, at 10:03 , Michael Cochez wrote:
> In http://www.postgresql.org/docs/8.2/static/tutorial-
> transactions.html
> "After rolling back to a savepoint, it continues to be defined, so
> you can roll back to it several times. Conversely, if you are sure
> you won't need to roll back to a particular savepoint again, it can
> be released, so the system can free some resources. Keep in mind
> that either releasing or rolling back to a savepoint will
> automatically release all savepoints that were defined after it."
> mustn't it be :
> "After rolling back to a savepoint, it continues to be defined, so
> you can roll back to it several times. Conversely, if you are sure
> you won't need to roll back to a particular savepoint again, it can
> be released, so the system can free some resources. Keep in mind
> that rolling back to a savepoint will automatically release all
> savepoints that were defined after it and releasing a savepoint
> will automatically release all savepoints defined before it."
>
> if not, could you please explain why this decision is made?
> thanks,
> Michael
If I do:
savepoint one;
update foo set bar = 2;
savepoint two;
update baz set foo = 3;
savepoint three;
delete from foo;
Why would it make sense to release "one" if i release "two"? If I
release "two", then it makes sense that I can never go back to "two"
or "three", but your proposed change means that if I release "two", I
can later rollback to "three" but not to "one". I don't see how
that's useful.
Essentially what the docs say is that savepoints are created on a
stack, and when you do something to to a savepoint "s", you
implicitly do the same thing to all the other savepoints above "s".
Or, if you think of them being nested:
savepoint one {
update foo set bar = 2;
savepoint two {
update baz set foo = 3;
savepoint three {
delete from foo;
...
}
...
}
...
}
then any operation on a savepoint also applies to any savepoints
nested within it.
From | Date | Subject | |
---|---|---|---|
Next Message | Michael Cochez | 2007-09-24 16:34:26 | Re: error in documentation? |
Previous Message | Michael Cochez | 2007-09-24 14:03:47 | error in documentation? |