]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Within a write-transaction on a wal database in mmap mode, check the page-cache for... mmap-wal-bigtrans
authordan <dan@noemail.net>
Fri, 7 Aug 2015 09:42:12 +0000 (09:42 +0000)
committerdan <dan@noemail.net>
Fri, 7 Aug 2015 09:42:12 +0000 (09:42 +0000)
FossilOrigin-Name: 3a82c8e6cb7227fe05e304c9550d0398404e0938

manifest
manifest.uuid
src/pager.c

index f50ad888299ce5f44895a575e8c0b8f0170dba69..5d3cbacb8d2694f45f664cff3412edde843125f2 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C increase\sthe\sversion\snumber\sto\s3.8.12
-D 2015-08-06T12:54:13.800
+C Within\sa\swrite-transaction\son\sa\swal\sdatabase\sin\smmap\smode,\scheck\sthe\spage-cache\sfor\san\sentry\sbefore\sthe\swal\sfile.\sThis\scan\sbe\sfaster\sif\sthe\swal\sfile\sis\svery\slarge.
+D 2015-08-07T09:42:12.553
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in 2fc9ca6bf5949d415801c007ed3004a4bdb7c380
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -319,7 +319,7 @@ F src/os_setup.h c9d4553b5aaa6f73391448b265b89bed0b890faa
 F src/os_unix.c 388c023582b17890f10c980b30ec1922b471753b
 F src/os_win.c 40b3af7a47eb1107d0d69e592bec345a3b7b798a
 F src/os_win.h eb7a47aa17b26b77eb97e4823f20a00b8bda12ca
-F src/pager.c aa916ca28606ccf4b6877dfc2b643ccbca86589f
+F src/pager.c c22ef6b16fa89e648368ae089746eeb82bea7edd
 F src/pager.h 6d435f563b3f7fcae4b84433b76a6ac2730036e2
 F src/parse.y 6d60dda8f8d418b6dc034f1fbccd816c459983a8
 F src/pcache.c cde06aa50962595e412d497e22fd2e07878ba1f0
@@ -1370,7 +1370,10 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P 483ebe8989ed7dbe197fe84e3eef6e76fa828e14
-R 72d1d4236810d5582f0e880ecec0e435
-U drh
-Z 8a021c02e13a3c92d09628068d66bcc9
+P e596a6b63f3a18c26352b1b3e67bb282fdec8055
+R f5613d53097ed5eefd891dfa83de9eb5
+T *branch * mmap-wal-bigtrans
+T *sym-mmap-wal-bigtrans *
+T -sym-trunk *
+U dan
+Z 06205d1f4e6cfd485fe91bd1df76aca8
index 324f248532735c9921b9c0ffd126a8e4f535ccda..78ac639ec7a947224dcbe1c7430b8c4ba0a4a785 100644 (file)
@@ -1 +1 @@
-e596a6b63f3a18c26352b1b3e67bb282fdec8055
\ No newline at end of file
+3a82c8e6cb7227fe05e304c9550d0398404e0938
\ No newline at end of file
index 060edb8d1dd7755b30cacdc5a090dbc03fcb66c7..29bbd21531a6116c3ce3c86141ae81cd8291a119 100644 (file)
@@ -5274,33 +5274,32 @@ int sqlite3PagerAcquire(
   if( pPager->errCode!=SQLITE_OK ){
     rc = pPager->errCode;
   }else{
-    if( bMmapOk && pagerUseWal(pPager) ){
-      rc = sqlite3WalFindFrame(pPager->pWal, pgno, &iFrame);
-      if( rc!=SQLITE_OK ) goto pager_acquire_err;
-    }
-
-    if( bMmapOk && iFrame==0 ){
-      void *pData = 0;
+    if( bMmapOk ){
+      if( pPager->eState>PAGER_READER ){
+        pPg = sqlite3PagerLookup(pPager, pgno);
+      }
 
-      rc = sqlite3OsFetch(pPager->fd, 
-          (i64)(pgno-1) * pPager->pageSize, pPager->pageSize, &pData
-      );
+      if( pPg==0 && pagerUseWal(pPager) ){
+        rc = sqlite3WalFindFrame(pPager->pWal, pgno, &iFrame);
+        if( rc!=SQLITE_OK ) goto pager_acquire_err;
+      }
 
-      if( rc==SQLITE_OK && pData ){
-        if( pPager->eState>PAGER_READER ){
-          pPg = sqlite3PagerLookup(pPager, pgno);
-        }
-        if( pPg==0 ){
+      if( pPg==0 && iFrame==0 ){
+        void *pData = 0;
+        rc = sqlite3OsFetch(pPager->fd, 
+            (i64)(pgno-1) * pPager->pageSize, pPager->pageSize, &pData
+        );
+        if( rc==SQLITE_OK && pData ){
           rc = pagerAcquireMapPage(pPager, pgno, pData, &pPg);
-        }else{
-          sqlite3OsUnfetch(pPager->fd, (i64)(pgno-1)*pPager->pageSize, pData);
-        }
-        if( pPg ){
-          assert( rc==SQLITE_OK );
-          *ppPage = pPg;
-          return SQLITE_OK;
         }
       }
+
+      if( pPg ){
+        assert( rc==SQLITE_OK );
+        *ppPage = pPg;
+        return SQLITE_OK;
+      }
+
       if( rc!=SQLITE_OK ){
         goto pager_acquire_err;
       }