]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
When using a temporary file for a statement journal, store the first 64KiB in memory...
authordan <dan@noemail.net>
Mon, 29 Feb 2016 20:18:21 +0000 (20:18 +0000)
committerdan <dan@noemail.net>
Mon, 29 Feb 2016 20:18:21 +0000 (20:18 +0000)
FossilOrigin-Name: 44b2dc18e200e87cf062cb8f1659727c53fa36e9

manifest
manifest.uuid
src/memjournal.c
src/pager.c

index 97a63c3c193c5f5fac30d1481a039d6b0a0de779..0f2eb5c9d9b50f59d6418705530b501cf0a6ee68 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\sminor\sproblems\swith\snew\scode\sin\smemjournal.c.
-D 2016-02-29T20:00:13.233
+C When\susing\sa\stemporary\sfile\sfor\sa\sstatement\sjournal,\sstore\sthe\sfirst\s64KiB\sin\smemory.\sIf\sthe\sfile\sgrows\slarger\sthan\sthat,\sflush\sit\sto\sdisk\sand\sfree\sthe\smemory.\sHardcoding\sto\s64KiB\sis\sjust\san\sexperiment\sto\scheck\sthat\sthe\smemjournal.c\scode\sworks.
+D 2016-02-29T20:18:21.986
 F Makefile.in 4e90dc1521879022aa9479268a4cd141d1771142
 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
 F Makefile.msc 4f319afb7c049d40aff7af6e8c4e7cc2ba18e079
@@ -321,7 +321,7 @@ F src/mem1.c 6919bcf12f221868ea066eec27e579fed95ce98b
 F src/mem2.c f1940d9e91948dd6a908fbb9ce3835c36b5d83c3
 F src/mem3.c 8768ac94694f31ffaf8b4d0ea5dc08af7010a35a
 F src/mem5.c 9bf955937b07f8c32541c8a9991f33ce3173d944
-F src/memjournal.c 9b71f171dd20827022e9edd874adf8dba2b8d218
+F src/memjournal.c fea987c5809993211da554ba109816fae7e04dae
 F src/msvc.h d9ba56c6851227ab44b3f228a35f3f5772296495
 F src/mutex.c 8e45800ee78e0cd1f1f3fe8e398853307f4a085c
 F src/mutex.h 779d588e3b7756ec3ecf7d78cde1d84aba414f85
@@ -336,7 +336,7 @@ F src/os_setup.h c9d4553b5aaa6f73391448b265b89bed0b890faa
 F src/os_unix.c 3a6f20736dfb8a0949cdd66553fdf59f6604be35
 F src/os_win.c f0d7aa603eb6262143d7169a222aea07c4fca91d
 F src/os_win.h eb7a47aa17b26b77eb97e4823f20a00b8bda12ca
-F src/pager.c 24dd5e463f527427dd55fccc338c62260ae09b3a
+F src/pager.c 2bc43817697b5a4e88fd6a2cdb2cb25f2223505c
 F src/pager.h e1d38a2f14849e219df0f91f8323504d134c8a56
 F src/parse.y c3ce2c4a7cbf0b699239be6b2a945c5cb51875e2
 F src/pcache.c 647bb53a86b7bbcf55ad88089b3ea5a9170b90df
@@ -1451,7 +1451,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P e0b0b4316531fc8afa74b4882d9c74a91030ec69
-R 662914373e55c4521cf0e8e3f2bf03da
+P 9fd3f7b9c93325a83cdbe7dc9ee312b22a9c2898
+R 498bd0458994e1419985675b963a5c33
 U dan
-Z 9ebd4b81ff0d949546d50775b32308aa
+Z de04134d7998c131f105dcb3752be845
index 9b400a9c260f8e3acc6c1846fe13e721ca82dd36..f58d5d3e8e8e70a41cb19b5e0052e37c3e02064d 100644 (file)
@@ -1 +1 @@
-9fd3f7b9c93325a83cdbe7dc9ee312b22a9c2898
\ No newline at end of file
+44b2dc18e200e87cf062cb8f1659727c53fa36e9
\ No newline at end of file
index 632f9dc023558d4325d3e5b042fac4e7e094b3fd..eaa4d4f83a2f14ef027eb815ffb1d11f3d9a069e 100644 (file)
@@ -354,7 +354,7 @@ int sqlite3JournalOpen(
   ** it using the sqlite3OsOpen() function of the underlying VFS. In this
   ** case none of the code in this module is executed as a result of calls
   ** made on the journal file-handle.  */
-  memset(p, 0, sizeof(MemJournal) + pVfs ? pVfs->szOsFile : 0);
+  memset(p, 0, sizeof(MemJournal) + (pVfs ? pVfs->szOsFile : 0));
   if( nBuf==0 ){
     return sqlite3OsOpen(pVfs, zName, pJfd, flags, 0);
   }
index 81c6572c9d9aaa8a33c205cb07a38f9d10b58e2e..c74748c8e46b180daf076f7e122cfd72768fb479 100644 (file)
@@ -4355,11 +4355,14 @@ static int pager_write_pagelist(Pager *pPager, PgHdr *pList){
 static int openSubJournal(Pager *pPager){
   int rc = SQLITE_OK;
   if( !isOpen(pPager->sjfd) ){
+    const int flags =  SQLITE_OPEN_SUBJOURNAL | SQLITE_OPEN_READWRITE 
+      | SQLITE_OPEN_CREATE | SQLITE_OPEN_EXCLUSIVE 
+      | SQLITE_OPEN_DELETEONCLOSE;
+    int nBuf = 64*1024;
     if( pPager->journalMode==PAGER_JOURNALMODE_MEMORY || pPager->subjInMemory ){
-      sqlite3MemJournalOpen(pPager->sjfd);
-    }else{
-      rc = pagerOpentemp(pPager, pPager->sjfd, SQLITE_OPEN_SUBJOURNAL);
+      nBuf = -1;
     }
+    rc = sqlite3JournalOpen(pPager->pVfs, 0, pPager->sjfd, flags, nBuf);
   }
   return rc;
 }