Parcourir la source

Use custom db class when re-opening database

Re-opening the database did not use custom databaseClass nor vfsName
Pierre Bernard il y a 9 ans
Parent
commit
4d7c8842ae
2 fichiers modifiés avec 9 ajouts et 2 suppressions
  1. 5 0
      src/fmdb/FMDatabaseQueue.h
  2. 4 2
      src/fmdb/FMDatabaseQueue.m

+ 5 - 0
src/fmdb/FMDatabaseQueue.h

@@ -65,6 +65,7 @@
     dispatch_queue_t    _queue;
     FMDatabase          *_db;
     int                 _openFlags;
+	NSString            *_vfsName;
 }
 
 /** Path of database */
@@ -75,6 +76,10 @@
 
 @property (atomic, readonly) int openFlags;
 
+/**  Custom virtual file system name */
+
+@property (atomic, copy) NSString *vfsName;
+
 ///----------------------------------------------------
 /// @name Initialization, opening, and closing of queue
 ///----------------------------------------------------

+ 4 - 2
src/fmdb/FMDatabaseQueue.m

@@ -34,6 +34,7 @@ @implementation FMDatabaseQueue
 
 @synthesize path = _path;
 @synthesize openFlags = _openFlags;
+@synthesize vfsName = _vfsName;
 
 + (instancetype)databaseQueueWithPath:(NSString*)aPath {
     
@@ -82,6 +83,7 @@ - (instancetype)initWithPath:(NSString*)aPath flags:(int)openFlags vfs:(NSString
         _queue = dispatch_queue_create([[NSString stringWithFormat:@"fmdb.%@", self] UTF8String], NULL);
         dispatch_queue_set_specific(_queue, kDispatchQueueSpecificKey, (__bridge void *)self, NULL);
         _openFlags = openFlags;
+		_vfsName = [vfsName copy];
     }
     
     return self;
@@ -128,10 +130,10 @@ - (void)close {
 
 - (FMDatabase*)database {
     if (!_db) {
-        _db = FMDBReturnRetained([FMDatabase databaseWithPath:_path]);
+       _db = FMDBReturnRetained([[[self class] databaseClass] databaseWithPath:_path]);
         
 #if SQLITE_VERSION_NUMBER >= 3005000
-        BOOL success = [_db openWithFlags:_openFlags];
+        BOOL success = [_db openWithFlags:_openFlags vfs:_vfsName];
 #else
         BOOL success = [_db open];
 #endif