1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-08-07 02:42:48 +03:00

Do not reset the page cache when a rollback journal truncate fails, as doing

so can cause loss of information for an in-memory TEMP file.

FossilOrigin-Name: 345ce1c9f64f2a424663b4dfcbe4586d9df7bff6
This commit is contained in:
drh
2016-05-11 12:47:46 +00:00
parent 65c6420335
commit a37e0cfb22
3 changed files with 14 additions and 12 deletions

View File

@@ -1,5 +1,5 @@
C Always\struncate,\srather\sthan\spersist,\sthe\srollback\sjournal\sof\sa\sTEMP\sdatabase. 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-11T11:04:17.716 D 2016-05-11T12:47:46.752
F Makefile.in 9eda6e1c90d05c199c3ec8a7069b0682ad307657 F Makefile.in 9eda6e1c90d05c199c3ec8a7069b0682ad307657
F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
F Makefile.msc db82b35aef27f412fef14d8534afc022138bcdfd F Makefile.msc db82b35aef27f412fef14d8534afc022138bcdfd
@@ -364,7 +364,7 @@ F src/os_setup.h c9d4553b5aaa6f73391448b265b89bed0b890faa
F src/os_unix.c a9443cdab41d7f3cdf0df3a5aab62fd6e1c9b234 F src/os_unix.c a9443cdab41d7f3cdf0df3a5aab62fd6e1c9b234
F src/os_win.c 852fc2ff6084296348ed3739c548b2cf32df394e F src/os_win.c 852fc2ff6084296348ed3739c548b2cf32df394e
F src/os_win.h eb7a47aa17b26b77eb97e4823f20a00b8bda12ca F src/os_win.h eb7a47aa17b26b77eb97e4823f20a00b8bda12ca
F src/pager.c 146d724b2c35f5d2d98676188681db9ade33486d F src/pager.c cb7a3990eabd895f6487c0856a7fec02b5e40faa
F src/pager.h 329bdf078a4e0a3b35084534d58625d21fd03681 F src/pager.h 329bdf078a4e0a3b35084534d58625d21fd03681
F src/parse.y 10eb2f3fb62341291528c7984498054731f9d31e F src/parse.y 10eb2f3fb62341291528c7984498054731f9d31e
F src/pcache.c c128cafaac069e94931c3a743d5cf3d0c7b760d6 F src/pcache.c c128cafaac069e94931c3a743d5cf3d0c7b760d6
@@ -1488,7 +1488,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
P d9313d19c75a62f558b3df6b15595b15bbfa0b62 P 42fb6f1e99a6c31889819a0302679d598dc0ab1b
R 4210b2f60d7aff505c38881d5c5427ee R 6af21f51682f416bafd722831c805292
U drh U drh
Z a22a7f46bad36a1990f0c6b07c454824 Z f092752ae332e4cfbb76f62bab02296e

View File

@@ -1 +1 @@
42fb6f1e99a6c31889819a0302679d598dc0ab1b 345ce1c9f64f2a424663b4dfcbe4586d9df7bff6

View File

@@ -2032,12 +2032,14 @@ static int pager_end_transaction(Pager *pPager, int hasMaster, int bCommit){
sqlite3BitvecDestroy(pPager->pInJournal); sqlite3BitvecDestroy(pPager->pInJournal);
pPager->pInJournal = 0; pPager->pInJournal = 0;
pPager->nRec = 0; pPager->nRec = 0;
if( rc==SQLITE_OK ){
if( MEMDB || pagerFlushOnCommit(pPager) ){ if( MEMDB || pagerFlushOnCommit(pPager) ){
sqlite3PcacheCleanAll(pPager->pPCache); sqlite3PcacheCleanAll(pPager->pPCache);
}else{ }else{
sqlite3PcacheClearWritable(pPager->pPCache); sqlite3PcacheClearWritable(pPager->pPCache);
} }
sqlite3PcacheTruncate(pPager->pPCache, pPager->dbSize); sqlite3PcacheTruncate(pPager->pPCache, pPager->dbSize);
}
if( pagerUseWal(pPager) ){ if( pagerUseWal(pPager) ){
/* Drop the WAL write-lock, if any. Also, if the connection was in /* Drop the WAL write-lock, if any. Also, if the connection was in