Patent ID: 7499924

Claim:
A method for selectively releasing locks on data when rolling back to a savepoint, comprising the steps of: (a) providing at least one savepoint in a transaction having multiple lock owners wherein the transaction owns a read lock at the same time as the at least one savepoint within the transaction owns a write lock utilizing lock manager compatibility class constructs, assigning the savepoint and the transaction as a team, identifying the at least one savepoint and the transaction as separate lock owners to a lock manager, assigning to the at least one savepoint ownership of locks which are to be released when rolling back to the at least one savepoint occurs wherein at least one lock is assigned to the at least one savepoint and at least one lock is assigned to the transaction; (b) rolling back the transaction to the at least one savepoint; (c) releasing any locks owned by the at least one savepoint by the lock manager, and (d) maintaining any locks owned by the transaction and selectively releasing ownership of locks by the lock manager once commit is assigned to the transaction, (e) and providing for subsequently releasing a given savepoint which is not rolled back to wherein when the given savepoint is released, and releasing the locks owned by the given savepoint by reassigning the locks owned by the given savepoint to a savepoint immediately preceding the released given savepoint or maintaining knowledge of one or more released given savepoints for releasing the locks if rollback to a preceding savepoint should occur, wherein individual lock requests are not needed to release locks for rolling back to the at least one savepoint and the at least one savepoint further comprises a sequence of savepoints, where when the transaction is rolled back through more than one savepoint of the sequence, each savepoint of the sequence and the transaction are identified as separate lock owners to the lock manager, and as each savepoint of the sequence is established, the established savepoint becomes a member assigned to the team.