-(defun run-abort-hooks ()
- (let ((remainder (remove-if (lambda (hook)
- (< (car hook) *transaction-level*))
- (gethash *transaction-id* *transaction-aborts*))))
- (mapcar #'(lambda (hook)
- (funcall (cdr hook)))
- (gethash *transaction-id* *transaction-aborts*))
- (setf (gethash *transaction-id* *transaction-aborts*) remainder)))
-
-
-(defmacro with-transaction ((&key database)
- &rest body)
- (let ((dbsym (gensym "db"))
- (transym (gensym "tran")))
- `(let ((,dbsym (or ,database *default-database*))
- (,transym nil)
- (*transaction-id* (or *transaction-id*
- (gensym "txn")))
- (*transaction-level* (1+ *transaction-level*)))
+(defmacro with-transaction ((&key (database '*default-database*)) &rest body)
+ (let ((db (gensym "db-")))
+ `(let ((,db ,database))