Author: rfm
Date: Tue Oct  7 09:09:38 2014
New Revision: 38109

URL: http://svn.gna.org/viewcvs/gnustep?rev=38109&view=rev
Log:
improve transaction rollback

Modified:
    libs/sqlclient/trunk/SQLClient.m

Modified: libs/sqlclient/trunk/SQLClient.m
URL: 
http://svn.gna.org/viewcvs/gnustep/libs/sqlclient/trunk/SQLClient.m?rev=38109&r1=38108&r2=38109&view=diff
==============================================================================
--- libs/sqlclient/trunk/SQLClient.m    (original)
+++ libs/sqlclient/trunk/SQLClient.m    Tue Oct  7 09:09:38 2014
@@ -3201,6 +3201,7 @@
   if (_count > 0)
     {
       NSMutableArray    *info = nil;
+      BOOL              wrap = [_db isInTransaction] ? NO : YES;
 
       NS_DURING
        {
@@ -3216,14 +3217,14 @@
           sql = [[NSMutableString alloc] initWithCapacity: sqlSize + 13];
           [info addObject: sql];
           [sql release];
-          if ([_db isInTransaction] == NO)
+          if (YES == wrap)
             {
               [sql appendString: @"begin;"];
             }
 
           [self _addSQL: sql andArgs: info];
 
-          if ([_db isInTransaction] == NO)
+          if (YES == wrap)
             {
               [sql appendString: @"commit;"];
             }
@@ -3233,8 +3234,10 @@
        }
       NS_HANDLER
        {
+          NSException   *e = localException;
+
           [info release];
-          if ([_db isInTransaction] == NO)
+          if (YES == wrap)
             {
               NS_DURING
                 {
@@ -3242,10 +3245,12 @@
                 }
               NS_HANDLER
                 {
+                  [_db disconnect];
+                  NSLog(@"Disconnected due to failed rollback after %@", e);
                 }
               NS_ENDHANDLER
             }
-          [localException raise];
+          [e raise];
        }
       NS_ENDHANDLER
     }


_______________________________________________
Gnustep-cvs mailing list
[email protected]
https://mail.gna.org/listinfo/gnustep-cvs

Reply via email to