- (unwind-protect
- (progn
- (database-execute-command "begin" database)
- (setf fd (lo-open ptr object-id postgresql::+INV_WRITE+))
- (when (>= fd 0)
- (when (= (lo-write ptr fd data length) length)
- (setf result t))))
- (progn
- (when (and fd (>= fd 0))
- (lo-close ptr fd))
- (database-execute-command (if result "commit" "rollback") database)))
+ (with-transaction (:database database)
+ (unwind-protect
+ (progn
+ (setf fd (lo-open ptr object-id postgresql::+INV_WRITE+))
+ (when (>= fd 0)
+ (when (= (lo-write ptr fd data length) length)
+ (setf result t))))
+ (progn
+ (when (and fd (>= fd 0))
+ (lo-close ptr fd))
+ )))