Re: error in documentation?
От | Phil Frost |
---|---|
Тема | Re: error in documentation? |
Дата | |
Msg-id | 1375DFC2-C35B-4B89-B26D-4031C0E14E79@macprofessionals.com обсуждение исходный текст |
Ответ на | error in documentation? (Michael Cochez <michaelcochez@yahoo.com>) |
Ответы |
Re: error in documentation?
|
Список | 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.
В списке pgsql-docs по дате отправления: