]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Do not reset the page cache when a rollback journal truncate fails, as doing
authordrh <drh@noemail.net>
Wed, 11 May 2016 12:47:46 +0000 (12:47 +0000)
committerdrh <drh@noemail.net>
Wed, 11 May 2016 12:47:46 +0000 (12:47 +0000)
so can cause loss of information for an in-memory TEMP file.

FossilOrigin-Name: 345ce1c9f64f2a424663b4dfcbe4586d9df7bff6

manifest
manifest.uuid
src/pager.c

index a8c8e54249d75531f600e27fdd9325a9e114a4f7..a0a2ed640ac225132089d9be55278b9143283a21 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Always\struncate,\srather\sthan\spersist,\sthe\srollback\sjournal\sof\sa\sTEMP\sdatabase.
-D 2016-05-11T11:04:17.716
+C Do\snot\sreset\sthe\spage\scache\swhen\sa\srollback\sjournal\struncate\sfails,\sas\sdoing\nso\scan\scause\sloss\sof\sinformation\sfor\san\sin-memory\sTEMP\sfile.
+D 2016-05-11T12:47:46.752
 F Makefile.in 9eda6e1c90d05c199c3ec8a7069b0682ad307657
 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
 F Makefile.msc db82b35aef27f412fef14d8534afc022138bcdfd
@@ -364,7 +364,7 @@ F src/os_setup.h c9d4553b5aaa6f73391448b265b89bed0b890faa
 F src/os_unix.c a9443cdab41d7f3cdf0df3a5aab62fd6e1c9b234
 F src/os_win.c 852fc2ff6084296348ed3739c548b2cf32df394e
 F src/os_win.h eb7a47aa17b26b77eb97e4823f20a00b8bda12ca
-F src/pager.c 146d724b2c35f5d2d98676188681db9ade33486d
+F src/pager.c cb7a3990eabd895f6487c0856a7fec02b5e40faa
 F src/pager.h 329bdf078a4e0a3b35084534d58625d21fd03681
 F src/parse.y 10eb2f3fb62341291528c7984498054731f9d31e
 F src/pcache.c c128cafaac069e94931c3a743d5cf3d0c7b760d6
@@ -1488,7 +1488,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 d9313d19c75a62f558b3df6b15595b15bbfa0b62
-R 4210b2f60d7aff505c38881d5c5427ee
+P 42fb6f1e99a6c31889819a0302679d598dc0ab1b
+R 6af21f51682f416bafd722831c805292
 U drh
-Z a22a7f46bad36a1990f0c6b07c454824
+Z f092752ae332e4cfbb76f62bab02296e
index eb889327ae7d194e3a37680effdbc078b685705c..39ea1115d0f7e90e1b0190783fa4a04d07f7b98b 100644 (file)
@@ -1 +1 @@
-42fb6f1e99a6c31889819a0302679d598dc0ab1b
\ No newline at end of file
+345ce1c9f64f2a424663b4dfcbe4586d9df7bff6
\ No newline at end of file
index 359e2336067b3605659412b9e58c54661f727420..d2dd639892f22bcf6303168447c41c20d27891c2 100644 (file)
@@ -2032,12 +2032,14 @@ static int pager_end_transaction(Pager *pPager, int hasMaster, int bCommit){
   sqlite3BitvecDestroy(pPager->pInJournal);
   pPager->pInJournal = 0;
   pPager->nRec = 0;
-  if( MEMDB || pagerFlushOnCommit(pPager) ){
-    sqlite3PcacheCleanAll(pPager->pPCache);
-  }else{
-    sqlite3PcacheClearWritable(pPager->pPCache);
+  if( rc==SQLITE_OK ){
+    if( MEMDB || pagerFlushOnCommit(pPager) ){
+      sqlite3PcacheCleanAll(pPager->pPCache);
+    }else{
+      sqlite3PcacheClearWritable(pPager->pPCache);
+    }
+    sqlite3PcacheTruncate(pPager->pPCache, pPager->dbSize);
   }
-  sqlite3PcacheTruncate(pPager->pPCache, pPager->dbSize);
 
   if( pagerUseWal(pPager) ){
     /* Drop the WAL write-lock, if any. Also, if the connection was in