diff --git a/manifest b/manifest index eff6cd9a5e..e3477b52b0 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Remove\san\sunnecessary\scall\sto\ssqlite3PcacheMakeClean()\sinside\sof\sthe\sROLLBACK\nlogic. -D 2016-05-12T12:01:20.280 +C For\sin-memory\sdatabases,\sit\sdoes\snot\smatter\sif\spcache\sentries\sare\smarked\n"clean"\sor\s"writable". +D 2016-05-12T12:08:48.058 F Makefile.in 9eda6e1c90d05c199c3ec8a7069b0682ad307657 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.msc db82b35aef27f412fef14d8534afc022138bcdfd @@ -364,11 +364,11 @@ 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 b7f9341d1c8917d0050f11597c588d0b4e379df9 +F src/pager.c baef5d8d31d220001fc61013f401c98950749201 F src/pager.h 329bdf078a4e0a3b35084534d58625d21fd03681 F src/parse.y 10eb2f3fb62341291528c7984498054731f9d31e -F src/pcache.c 0e8453c2aaa8a72e09c58edeb0f0976dc652e827 -F src/pcache.h 6b865be765d1ebd06145219550b10921c7da7cc9 +F src/pcache.c 5291b6ab838132f856fe8067ca25772d221c4864 +F src/pcache.h 33b40350df1b6c278e019dee37f87e1bac276223 F src/pcache1.c 7f51d2b541aab57596adf62db2c4bb025d34f04d F src/pragma.c faf42922bb7ab2f6672cb550356c1967abae3c84 F src/pragma.h 64c78a648751b9f4f297276c4eb7507b14b4628c @@ -1488,7 +1488,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P bc202e5b418d5a57bfc766883c4417c94829d96e -R 94f384a80fd36cfa7eab53c97f52730e +P 0dc50d9915cd88916229ca5c3834de82fa16f017 ad601c7962a60a11699cf31f1faee09b95d5c710 +R 7667d141b3239c7f232de8ca756273cf +T +closed ad601c7962a60a11699cf31f1faee09b95d5c710 U drh -Z 3db2648b2bf79fa343d087598efa8f84 +Z 488a663f0afeb720045f9ee67fd9acb5 diff --git a/manifest.uuid b/manifest.uuid index e0fbea1e69..90f4a0036f 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -0dc50d9915cd88916229ca5c3834de82fa16f017 \ No newline at end of file +06c1e27ca868f247f8c27b03eb19aac004f28650 \ No newline at end of file diff --git a/src/pager.c b/src/pager.c index 654cc640d3..75cde3c024 100644 --- a/src/pager.c +++ b/src/pager.c @@ -2033,7 +2033,7 @@ static int pager_end_transaction(Pager *pPager, int hasMaster, int bCommit){ pPager->pInJournal = 0; pPager->nRec = 0; if( rc==SQLITE_OK ){ - if( MEMDB || pagerFlushOnCommit(pPager) ){ + if( pagerFlushOnCommit(pPager) ){ sqlite3PcacheCleanAll(pPager->pPCache); }else{ sqlite3PcacheClearWritable(pPager->pPCache); diff --git a/src/pcache.c b/src/pcache.c index fab6ad32a2..ee7914a444 100644 --- a/src/pcache.c +++ b/src/pcache.c @@ -14,7 +14,13 @@ #include "sqliteInt.h" /* -** A complete page cache is an instance of this structure. +** A complete page cache is an instance of this structure. Every +** entry in the cache holds a single page of the database file. The +** btree layer only operates on the cached copy of the database pages. +** +** A page cache entry is "clean" if it exactly matches what is currently +** on disk. A page is "dirty" if it has been modified and needs to be +** persisted to disk. ** ** pDirty, pDirtyTail, pSynced: ** All dirty pages are linked into the doubly linked list using diff --git a/src/pcache.h b/src/pcache.h index 04bce289d0..8e0f12e094 100644 --- a/src/pcache.h +++ b/src/pcache.h @@ -26,7 +26,7 @@ struct PgHdr { sqlite3_pcache_page *pPage; /* Pcache object page handle */ void *pData; /* Page data */ void *pExtra; /* Extra content */ - PgHdr *pDirty; /* Transient list of dirty pages */ + PgHdr *pDirty; /* Transient list of dirty sorted by pgno */ Pager *pPager; /* The pager this page is part of */ Pgno pgno; /* Page number for this page */ #ifdef SQLITE_CHECK_PAGES