diff --git a/manifest b/manifest index 72d4af2b39..eae430df41 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sa\stest\sscript\sproblem\scausing\sa\stest\sto\sfail\sif\sthe\sICU\sextension\sis\senabled. -D 2016-07-06T10:17:43.607 +C Add\sthe\sSQLITE_DBSTATUS_CACHE_USED_SHARED\ssqlite3_db_status()\sparameter.\sThis\soption\sis\ssimilar\sto\sDBSTATUS_CACHE_USED,\sexcept\sthat\sit\sdivides\smemory\sused\sby\sshared\scaches\sevenly\sbetween\sall\sconnections. +D 2016-07-06T18:42:34.265 F Makefile.in 6c20d44f72d4564f11652b26291a214c8367e5db F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.msc d66d0395c38571aab3804f8db0fa20707ae4609a @@ -327,8 +327,8 @@ F src/auth.c b56c78ebe40a2110fd361379f7e8162d23f92240 F src/backup.c 6df65fdd569c901a418887a1a76f82ec35044556 F src/bitvec.c 3ee4c8b2c94ed3a7377256e18199e6ff5cf33f63 F src/btmutex.c bc87dd3b062cc26edfe79918de2200ccb8d41e73 -F src/btree.c 0621247619df15790f7ed5f14926cfb3925c10b1 -F src/btree.h 2107a2630e02c8cba58bb12ce14e731e734ea29c +F src/btree.c dc4e5f3e95fd57b610422e36e0913662ecd6814c +F src/btree.h aee84823bb383d6ae3728b068f9130d2b36b71eb F src/btreeInt.h c18b7d2a3494695133e4e60ee36061d37f45d9a5 F src/build.c d1fdfd7ab8f5447e494ef15825973bf0719527c6 F src/callback.c 2e76147783386374bf01b227f752c81ec872d730 @@ -385,12 +385,12 @@ F src/resolve.c cca3aa77b95706df5d635a2141a4d1de60ae6598 F src/rowset.c 7b7e7e479212e65b723bf40128c7b36dc5afdfac F src/select.c f3c6e9065fb34f6a23af27ec7f1f717ffbfc2ee4 F src/shell.c 14ff7f660530a52b117d110ba3390b7b2eb719b6 -F src/sqlite.h.in 5f8113dbec74c6c093ead9930afb8c9fbd9f643d +F src/sqlite.h.in 5e6785f6d2148b20ecd891039b12e9c7b8c552ca F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8 F src/sqlite3ext.h 98f72cbfe00169c39089115427d06ea05fe4b4a2 F src/sqliteInt.h 2ac73e9fdd138f4607139d9bd6a1e6dcd01837dc F src/sqliteLimit.h c0373387c287c8d0932510b5547ecde31b5da247 -F src/status.c 70912d7be68e9e2dbc4010c93d344af61d4c59ba +F src/status.c 5b18f9526900f61189ab0b83f1ef41d9f871a2ab F src/table.c 5226df15ab9179b9ed558d89575ea0ce37b03fc9 F src/tclsqlite.c 25fbbbb97f76dbfd113153fb63f52d7ecfac5dd0 F src/test1.c 08faa045c45b1d3f62c28c93cae955f518317f68 @@ -419,7 +419,7 @@ F src/test_intarray.c 870124b95ec4c645d4eb84f15efb7133528fb1a5 F src/test_intarray.h 9dc57417fb65bc7835cc18548852cc08cc062202 F src/test_journal.c d3b83f2bcb7792c709e57abddc456a2b1818643a F src/test_loadext.c 337056bae59f80b9eb00ba82088b39d0f4fe6dfd -F src/test_malloc.c 94c18e88d6df6d471a0d04ddb809f833d1739950 +F src/test_malloc.c 6b27e947eeeb70d11aa65406ed28d749e39b6356 F src/test_multiplex.c eafc567ebe162e36f17b5062285dfe90461cf8e9 F src/test_multiplex.h c08e4e8f8651f0c5e0509b138ff4d5b43ed1f5d3 F src/test_mutex.c dbdfaff8580071f2212a0deae3325a93a737819c @@ -621,7 +621,7 @@ F test/ctime.test 0b995accd44a52914bd4744d5c1b6e1a56c7897c F test/cursorhint.test 7bc346788390475e77a345da2b92270d04d35856 F test/cursorhint2.test 2b45341d32d1aae9991a00ef31ebca339b274255 F test/date.test 984ac1e3e5e031386866f034006148d3972b4a65 -F test/dbstatus.test 8de104bb5606f19537d23cd553b41349b5ab1204 +F test/dbstatus.test 254427f026b55ab6eba99bd8493f4edbc370bb13 F test/dbstatus2.test e93ab03bfae6d62d4d935f20de928c19ca0ed0ab F test/default.test 0cb49b1c315a0d81c81d775e407f66906a2a604d F test/delete.test e1bcdf8926234e27aac24b346ad83d3329ec8b6f @@ -1504,7 +1504,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 724e4cdc25fc80b8face57b3398cd338994fb23c -R c62c8dbad784e0483dfc9fa19c59eefb +P 0c228f5d3db1be598ebf5d9170428c19d18e01ad d58401ab26c7c5417eb7d540f47d11c4e49edcb2 +R b82357a7b430039c936434bd64729f72 +T +closed d58401ab26c7c5417eb7d540f47d11c4e49edcb2 U dan -Z a917ae810e6e02aa96317b48ea0e74c6 +Z cd4dfb8a318d1cd48c9fef00f9959964 diff --git a/manifest.uuid b/manifest.uuid index 37cc004d35..445104cad7 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -0c228f5d3db1be598ebf5d9170428c19d18e01ad \ No newline at end of file +06cf2680588c8dc4f0cbde275a09cfdcb5943268 \ No newline at end of file diff --git a/src/btree.c b/src/btree.c index f37199276f..7fc9193dc8 100644 --- a/src/btree.c +++ b/src/btree.c @@ -2337,9 +2337,9 @@ int sqlite3BtreeOpen( #if !defined(SQLITE_OMIT_SHARED_CACHE) && !defined(SQLITE_OMIT_DISKIO) /* Add the new BtShared object to the linked list sharable BtShareds. */ + pBt->nRef = 1; if( p->sharable ){ MUTEX_LOGIC( sqlite3_mutex *mutexShared; ) - pBt->nRef = 1; MUTEX_LOGIC( mutexShared = sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_MASTER);) if( SQLITE_THREADSAFE && sqlite3GlobalConfig.bCoreMutex ){ pBt->mutex = sqlite3MutexAlloc(SQLITE_MUTEX_FAST); @@ -2410,6 +2410,7 @@ btree_open_out: assert( sqlite3_mutex_held(mutexOpen) ); sqlite3_mutex_leave(mutexOpen); } + assert( rc!=SQLITE_OK || sqlite3BtreeConnectionCount(*ppBtree)>0 ); return rc; } @@ -9698,4 +9699,14 @@ int sqlite3HeaderSizeBtree(void){ return ROUND8(sizeof(MemPage)); } int sqlite3BtreeSharable(Btree *p){ return p->sharable; } + +/* +** Return the number of connections to the BtShared object accessed by +** the Btree handle passed as the only argument. For private caches +** this is always 1. For shared caches it may be 1 or greater. +*/ +int sqlite3BtreeConnectionCount(Btree *p){ + testcase( p->sharable ); + return p->pBt->nRef; +} #endif diff --git a/src/btree.h b/src/btree.h index 5720df90f7..c8b293ef17 100644 --- a/src/btree.h +++ b/src/btree.h @@ -328,11 +328,13 @@ void sqlite3BtreeCursorList(Btree*); void sqlite3BtreeEnterAll(sqlite3*); int sqlite3BtreeSharable(Btree*); void sqlite3BtreeEnterCursor(BtCursor*); + int sqlite3BtreeConnectionCount(Btree*); #else # define sqlite3BtreeEnter(X) # define sqlite3BtreeEnterAll(X) # define sqlite3BtreeSharable(X) 0 # define sqlite3BtreeEnterCursor(X) +# define sqlite3BtreeConnectionCount(X) 1 #endif #if !defined(SQLITE_OMIT_SHARED_CACHE) && SQLITE_THREADSAFE diff --git a/src/sqlite.h.in b/src/sqlite.h.in index 4865f18132..55f96dd898 100644 --- a/src/sqlite.h.in +++ b/src/sqlite.h.in @@ -6765,6 +6765,18 @@ int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int resetFlg); ** memory used by all pager caches associated with the database connection.)^ ** ^The highwater mark associated with SQLITE_DBSTATUS_CACHE_USED is always 0. ** +** [[SQLITE_DBSTATUS_CACHE_USED_SHARED]] +** ^(