Selaa lähdekoodia

Got the order of things wrong with transactions + a pool.

August Mueller 14 vuotta sitten
vanhempi
commit
a010ef4f26
2 muutettua tiedostoa jossa 19 lisäystä ja 9 poistoa
  1. 17 9
      src/FMDatabase.m
  2. 2 0
      src/fmdb.m

+ 17 - 9
src/FMDatabase.m

@@ -845,8 +845,10 @@ - (BOOL)rollback {
     BOOL b = [self executeUpdate:@"ROLLBACK TRANSACTION;"];
     if (b) {
         _inTransaction = NO;
-        [self pushInPoolIfClose];
     }
+    
+    [self pushInPoolIfClose];
+    
     return b;
 }
 
@@ -854,31 +856,37 @@ - (BOOL)commit {
     BOOL b =  [self executeUpdate:@"COMMIT TRANSACTION;"];
     if (b) {
         _inTransaction = NO;
-        [self pushInPoolIfClose];
     }
+    
+    [self pushInPoolIfClose];
+    
     return b;
 }
 
 - (BOOL)beginDeferredTransaction {
+    
+    if (_pool) {
+        [self pullFromPool];
+    }
+    
     BOOL b =  [self executeUpdate:@"BEGIN DEFERRED TRANSACTION;"];
     if (b) {
         _inTransaction = YES;
-        
-        if (_pool) {
-            [self pullFromPool];
-        }
     }
+    
     return b;
 }
 
 - (BOOL)beginTransaction {
+    
+    if (_pool) {
+        [self pullFromPool];
+    }
+    
     BOOL b =  [self executeUpdate:@"BEGIN EXCLUSIVE TRANSACTION;"];
     if (b) {
         _inTransaction = YES;
         
-        if (_pool) {
-            [self pullFromPool];
-        }
         
     }
     return b;

+ 2 - 0
src/fmdb.m

@@ -635,6 +635,8 @@ int main (int argc, const char * argv[]) {
     
     [db commit];
     
+	[db executeUpdate:@"insert into easy values (?)", [NSNumber numberWithInt:3]];
+    
     FMDBQuickCheck([dbPool countOfOpenDatabases] == 1);