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