r9556: * sql/transactions.lisp: Apply return value patch from
[clsql.git] / sql / transaction.lisp
index d41d6eff7c0f8a33d332a430af54ea617a382607..bf368c007d8b8aaee8fbfe6fe47645d6876274db 100644 (file)
@@ -82,9 +82,10 @@ back and otherwise the transaction is committed."
   (let ((db (gensym "db-")))
     `(let ((,db ,database))
       (unwind-protect
-           (progn
+           (prog2
              (database-start-transaction ,db)
-             ,@body
+             (progn
+               ,@body)
              (mark-transaction-committed ,db))
         (if (eq (transaction-status (transaction ,db)) :committed)
             (database-commit-transaction ,db)
@@ -115,8 +116,10 @@ are called."
 transaction."
   (and database (transaction database) (= (transaction-level database) 1)))
 
-(defun autocommit (&key (database *default-database*) (set :unspecified))
-  "Returns whether autocommit is currently active."
-  (unless (eq set :unspecified)
-    (setf (database-autocommit database) set))
-  (database-autocommit database))
+(defun set-autocommit (value &key (database *default-database*))
+  "Sets autocommit on or off. Returns old value of of autocommit flag."
+  (let ((old-value (database-autocommit database)))
+    (setf (database-autocommit database) value)
+    (database-autocommit database)
+    old-value))
+