| Index: third_party/sqlite/amalgamation/sqlite3.c
|
| diff --git a/third_party/sqlite/amalgamation/sqlite3.c b/third_party/sqlite/amalgamation/sqlite3.c
|
| index f82ed1cb45dc0527bb0595a1b448ae7c1aec780e..9c66c16c9e47cab0198735fcac01648a2c6be556 100644
|
| --- a/third_party/sqlite/amalgamation/sqlite3.c
|
| +++ b/third_party/sqlite/amalgamation/sqlite3.c
|
| @@ -126259,94 +126259,3 @@ SQLITE_PRIVATE void sqlite3Fts3IcuTokenizerModule(
|
| #endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) */
|
|
|
| /************** End of fts3_icu.c ********************************************/
|
| -
|
| -/* Touch the bigs of pCache which will be processed by
|
| -** pcache1TruncateUnsafe(), pcache1FreePage(), and pcache1Free()
|
| -** during sqlite3_close(). *pnTouched will have the number of bytes
|
| -** represented by the pages touched added to it. */
|
| -SQLITE_PRIVATE void pcache1VisitUnsafe(PCache1 *pCache,
|
| - unsigned int *pnTouched){
|
| - unsigned int iHash;
|
| -
|
| - assert( sqlite3_mutex_held(pCache->pGroup->mutex) );
|
| -
|
| - for(iHash=0; iHash<pCache->nHash; iHash++){
|
| - PgHdr1 *pp = pCache->apHash[iHash];
|
| - PgHdr1 *lp = pp;
|
| - unsigned int s = 0;
|
| - while (pp) {
|
| - /* Crash if a loop is detected. */
|
| - /* NOTE(shess): Touches the PgHdr1 structure as a side effect.
|
| - ** If this check is removed, revise the code to match ordering
|
| - ** in pcache1TruncateUnsafe(). Yes, I realize this is
|
| - ** probably reordered to heck and back.
|
| - */
|
| - if (lp == pp->pNext) {
|
| - int *zero = NULL;
|
| - *zero = 42;
|
| - }
|
| -
|
| - /* Touch the data area, in case it's on a prior VM page. */
|
| - *pnTouched += sqlite3MallocSize(PGHDR1_TO_PAGE(pp));
|
| -
|
| - pp = pp->pNext;
|
| -
|
| - /* Bump the loop-detection pointer forward every time s is an
|
| - ** even power of 2. */
|
| - s++;
|
| - if (!(s & (s-1))) {
|
| - lp = pp;
|
| - }
|
| - }
|
| - }
|
| -}
|
| -
|
| -/* TODO(shess): Debugging code for http://crbug.com/95527 .
|
| -** Touch the entire page cache for the given db. The idea is that if
|
| -** paging activity is causing the slowdown, the shutdown monitor will
|
| -** see things happening here, rather than in sqlite3_close().
|
| -*/
|
| -int sqlite3_95527(sqlite3 *db, unsigned int *pnTouched){
|
| - unsigned int iDb;
|
| -
|
| - /* This code assumes that pcache1 is the pager cache implementation. */
|
| - if (sqlite3GlobalConfig.pcache.xTruncate != pcache1Truncate) {
|
| - return SQLITE_OK;
|
| - }
|
| -
|
| - /* This setup is like sqlite3_close(). */
|
| - if( !db ){
|
| - return SQLITE_OK;
|
| - }
|
| - if( !sqlite3SafetyCheckSickOrOk(db) ){
|
| - return SQLITE_MISUSE_BKPT;
|
| - }
|
| - sqlite3_mutex_enter(db->mutex);
|
| -
|
| - /* A sqlite3* connection may refer to multiple underlying database
|
| - files. Usually these will be 'main' and 'temp', with 'temp' having
|
| - no btree or pager. */
|
| - for(iDb=0; iDb<db->nDb; iDb++){
|
| - Btree *b;
|
| - Pager *p;
|
| - PCache1 *pCache;
|
| - struct Db *pDb = &db->aDb[iDb];
|
| - if (!pDb) continue;
|
| -
|
| - b = pDb->pBt;
|
| - if (!b) continue;
|
| -
|
| - p = sqlite3BtreePager(b);
|
| - if (!p) continue;
|
| -
|
| - pCache = (PCache1*)p->pPCache->pCache;
|
| - if (!pCache) continue;
|
| -
|
| - pcache1EnterMutex(pCache->pGroup);
|
| - pcache1VisitUnsafe(pCache, pnTouched);
|
| - pcache1LeaveMutex(pCache->pGroup);
|
| - }
|
| -
|
| - sqlite3_mutex_leave(db->mutex);
|
| - return SQLITE_OK;
|
| -}
|
|
|