aboutsummaryrefslogtreecommitdiff
path: root/src/btree.c
diff options
context:
space:
mode:
authordan <Dan Kennedy>2022-11-28 18:41:41 +0000
committerdan <Dan Kennedy>2022-11-28 18:41:41 +0000
commit1b3d13e65e125500d1034e889b37363baa8f1e38 (patch)
tree81840dd9a80fe5015dbd1ae798fe620876f38667 /src/btree.c
parente862b5fe1d2bda6ef7d557471c150c82ec453455 (diff)
downloadsqlite-1b3d13e65e125500d1034e889b37363baa8f1e38.tar.gz
sqlite-1b3d13e65e125500d1034e889b37363baa8f1e38.zip
Add the SQLITE_FCNTL_RESET_CACHE verb. Use it to ensure that the page cache is purged before and after a the recovery extension is run.
FossilOrigin-Name: 6db0bc4bc0d272b610bef2aeeae43f539ed6e7cc0a9cc767d5af85ecb0019d5f
Diffstat (limited to 'src/btree.c')
-rw-r--r--src/btree.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/btree.c b/src/btree.c
index cabcf675e..c949001b8 100644
--- a/src/btree.c
+++ b/src/btree.c
@@ -11083,6 +11083,17 @@ int sqlite3BtreeIsReadonly(Btree *p){
*/
int sqlite3HeaderSizeBtree(void){ return ROUND8(sizeof(MemPage)); }
+/*
+** If no transaction is active and the database is not a temp-db, clear
+** the in-memory pager cache.
+*/
+void sqlite3BtreeClearCache(Btree *p){
+ BtShared *pBt = p->pBt;
+ if( pBt->inTransaction==TRANS_NONE ){
+ sqlite3PagerClearCache(pBt->pPager);
+ }
+}
+
#if !defined(SQLITE_OMIT_SHARED_CACHE)
/*
** Return true if the Btree passed as the only argument is sharable.