Hi, Following a request[1] for savepoint release support in zope.sqlalchemy, I've been looking into how this might be done. Adding the necessary support to Zope's transaction module was quite simple [2], but the mapping of Zope transaction savepoints -> SQLAlchemy nested transactions -> database savepoints gives a problem...
How can I get SQLAlchemy to release a savepoint, without also releasing all subsequent savepoints (the nested transactions? This is demonstrated by the doctest below from my branch of Zope's transaction module: Savepoint release ----------------- Some data managers may only support a limited number of savepoints. >>> dm['bob-balance'] = 100.0 >>> dm['bob-balance'] 100.0 >>> savepoint1 = transaction.savepoint() >>> dm['bob-balance'] = 200.0 >>> dm['bob-balance'] 200.0 >>> savepoint2 = transaction.savepoint() >>> dm['bob-balance'] = 300.0 >>> dm['bob-balance'] 300.0 >>> savepoint3 = transaction.savepoint() To release resources on the data manager, a savepoint may be released: >>> savepoint2.release() The savepoint then becomes invalid and may no longer be used: >>> savepoint2.rollback() Traceback (most recent call last): ... InvalidSavepointError Subsequent savepoints remain valid: >>> dm['bob-balance'] = 400.0 >>> dm['bob-balance'] 400.0 >>> savepoint3.rollback() >>> dm['bob-balance'] 300.0 As do previous savepoints: >>> savepoint1.rollback() >>> dm['bob-balance'] 100.0 >>> transaction.abort() Laurence [1] http://groups.google.com/group/sqlalchemy/browse_thread/thread/b2594ff621538f3f [2] http://svn.zope.org/repos/main/transaction/branches/elro-savepoint-release
-- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalch...@googlegroups.com. To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.