On 10075 day of my life Marijn Haverbeke wrote:
Looks good. Is it intentional that the savepoint is rolled back after its body finishes, unless the body explicitly released/committed the savepoint?
Sorry, this is a last-minute-introduced bug. Swap release-savepoint and rollback-savepoint in with-savepoint definition.
Also, inheriting from transaction-handle means that abort-transaction and commit-transaction are also valid on savepoints. Does this make sense, ...?
No. I subclassed transaction-handle just for code writing speed. If you think it is important, make savepoint-handle an independent class.