Skip site navigation (1) Skip section navigation (2)

Peripheral Links

Header And Logo

PostgreSQL
| The world's most advanced open source database.

Site Navigation

Search for
  Advanced Search

Re: error in documentation?




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.



Home | Main Index | Thread Index

Privacy Policy | PostgreSQL Archives hosted by Command Prompt, Inc. | Designed by tinysofa
Copyright © 1996 – 2008 PostgreSQL Global Development Group