From 0ca1449a91828839694d481a617746ed8684df85 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Sebasti=C3=A1n=20Bernardo=20Galkin?=
 <sgalkin@grantaire.com.ar>
Date: Tue, 12 Jul 2011 13:02:01 -0300
Subject: [PATCH] Don't commit transaction in case of exceptions

Fixes http://dev.clojure.org/jira/browse/JDBC-11
---
 src/main/clojure/clojure/java/jdbc/internal.clj |   10 ++++------
 1 files changed, 4 insertions(+), 6 deletions(-)

diff --git a/src/main/clojure/clojure/java/jdbc/internal.clj b/src/main/clojure/clojure/java/jdbc/internal.clj
index 4d79cb5..dbc88fc 100644
--- a/src/main/clojure/clojure/java/jdbc/internal.clj
+++ b/src/main/clojure/clojure/java/jdbc/internal.clj
@@ -176,13 +176,11 @@
         (io!
           (.setAutoCommit con false)
           (try
-            (func)
-            (catch Exception e
-              (throw-rollback e))
+            (let [result (func)]
+              (when-not (rollback) (.commit con))
+              result)
             (finally
-              (if (rollback)
-                (.rollback con)
-                (.commit con))
+              (.rollback con)
               (rollback false)
               (.setAutoCommit con auto-commit)))))
       (func))))
-- 
1.7.6

