Lines Matching refs:pCache

53   sqlite3_pcache *pCache;             /* Pluggable cache module */  member
79 static void pcacheDump(PCache *pCache){ in pcacheDump() argument
85 if( pCache->pCache==0 ) return; in pcacheDump()
86 N = sqlite3PcachePagecount(pCache); in pcacheDump()
89 pLower = sqlite3GlobalConfig.pcache2.xFetch(pCache->pCache, i, 0); in pcacheDump()
93 sqlite3GlobalConfig.pcache2.xUnpin(pCache->pCache, pLower, 0); in pcacheDump()
108 static int pageOnDirtyList(PCache *pCache, PgHdr *pPg){ in pageOnDirtyList() argument
110 for(p=pCache->pDirty; p; p=p->pDirtyNext){ in pageOnDirtyList()
128 PCache *pCache; in sqlite3PcachePageSanity() local
131 pCache = pPg->pCache; in sqlite3PcachePageSanity()
132 assert( pCache!=0 ); /* Every page has an associated PCache */ in sqlite3PcachePageSanity()
135 assert( !pageOnDirtyList(pCache, pPg) );/* CLEAN pages not on dirty list */ in sqlite3PcachePageSanity()
140 assert( pPg->pDirtyPrev!=0 || pCache->pDirty==pPg ); in sqlite3PcachePageSanity()
141 assert( pageOnDirtyList(pCache, pPg) ); in sqlite3PcachePageSanity()
183 PCache *p = pPage->pCache; in pcacheManageDirtyList()
253 if( p->pCache->bPurgeable ){ in pcacheUnpin()
254 pcacheTrace(("%p.UNPIN %d\n", p->pCache, p->pgno)); in pcacheUnpin()
255 sqlite3GlobalConfig.pcache2.xUnpin(p->pCache->pCache, p->pPage, 0); in pcacheUnpin()
256 pcacheDump(p->pCache); in pcacheUnpin()
346 int sqlite3PcacheSetPageSize(PCache *pCache, int szPage){ in sqlite3PcacheSetPageSize() argument
347 assert( pCache->nRefSum==0 && pCache->pDirty==0 ); in sqlite3PcacheSetPageSize()
348 if( pCache->szPage ){ in sqlite3PcacheSetPageSize()
351 szPage, pCache->szExtra + ROUND8(sizeof(PgHdr)), in sqlite3PcacheSetPageSize()
352 pCache->bPurgeable in sqlite3PcacheSetPageSize()
355 sqlite3GlobalConfig.pcache2.xCachesize(pNew, numberOfCachePages(pCache)); in sqlite3PcacheSetPageSize()
356 if( pCache->pCache ){ in sqlite3PcacheSetPageSize()
357 sqlite3GlobalConfig.pcache2.xDestroy(pCache->pCache); in sqlite3PcacheSetPageSize()
359 pCache->pCache = pNew; in sqlite3PcacheSetPageSize()
360 pCache->szPage = szPage; in sqlite3PcacheSetPageSize()
361 pcacheTrace(("%p.PAGESIZE %d\n",pCache,szPage)); in sqlite3PcacheSetPageSize()
391 PCache *pCache, /* Obtain the page from this cache */ in sqlite3PcacheFetch() argument
398 assert( pCache!=0 ); in sqlite3PcacheFetch()
399 assert( pCache->pCache!=0 ); in sqlite3PcacheFetch()
401 assert( pCache->eCreate==((pCache->bPurgeable && pCache->pDirty) ? 1 : 2) ); in sqlite3PcacheFetch()
410 eCreate = createFlag & pCache->eCreate; in sqlite3PcacheFetch()
412 assert( createFlag==0 || pCache->eCreate==eCreate ); in sqlite3PcacheFetch()
413 assert( createFlag==0 || eCreate==1+(!pCache->bPurgeable||!pCache->pDirty) ); in sqlite3PcacheFetch()
414 pRes = sqlite3GlobalConfig.pcache2.xFetch(pCache->pCache, pgno, eCreate); in sqlite3PcacheFetch()
415 pcacheTrace(("%p.FETCH %d%s (result: %p) ",pCache,pgno, in sqlite3PcacheFetch()
433 PCache *pCache, /* Obtain the page from this cache */ in sqlite3PcacheFetchStress() argument
438 if( pCache->eCreate==2 ) return 0; in sqlite3PcacheFetchStress()
440 if( sqlite3PcachePagecount(pCache)>pCache->szSpill ){ in sqlite3PcacheFetchStress()
450 for(pPg=pCache->pSynced; in sqlite3PcacheFetchStress()
454 pCache->pSynced = pPg; in sqlite3PcacheFetchStress()
456 for(pPg=pCache->pDirtyTail; pPg && pPg->nRef; pPg=pPg->pDirtyPrev); in sqlite3PcacheFetchStress()
464 sqlite3GlobalConfig.pcache2.xPagecount(pCache->pCache), in sqlite3PcacheFetchStress()
465 numberOfCachePages(pCache)); in sqlite3PcacheFetchStress()
467 pcacheTrace(("%p.SPILL %d\n",pCache,pPg->pgno)); in sqlite3PcacheFetchStress()
468 rc = pCache->xStress(pCache->pStress, pPg); in sqlite3PcacheFetchStress()
469 pcacheDump(pCache); in sqlite3PcacheFetchStress()
475 *ppPage = sqlite3GlobalConfig.pcache2.xFetch(pCache->pCache, pgno, 2); in sqlite3PcacheFetchStress()
489 PCache *pCache, /* Obtain the page from this cache */ in pcacheFetchFinishWithInit() argument
502 pPgHdr->pCache = pCache; in pcacheFetchFinishWithInit()
505 return sqlite3PcacheFetchFinish(pCache,pgno,pPage); in pcacheFetchFinishWithInit()
515 PCache *pCache, /* Obtain the page from this cache */ in sqlite3PcacheFetchFinish() argument
525 return pcacheFetchFinishWithInit(pCache, pgno, pPage); in sqlite3PcacheFetchFinish()
527 pCache->nRefSum++; in sqlite3PcacheFetchFinish()
539 p->pCache->nRefSum--; in sqlite3PcacheRelease()
557 p->pCache->nRefSum++; in sqlite3PcacheRef()
571 p->pCache->nRefSum--; in sqlite3PcacheDrop()
572 sqlite3GlobalConfig.pcache2.xUnpin(p->pCache->pCache, p->pPage, 1); in sqlite3PcacheDrop()
586 pcacheTrace(("%p.DIRTY %d\n",p->pCache,p->pgno)); in sqlite3PcacheMakeDirty()
606 pcacheTrace(("%p.CLEAN %d\n",p->pCache,p->pgno)); in sqlite3PcacheMakeClean()
616 void sqlite3PcacheCleanAll(PCache *pCache){ in sqlite3PcacheCleanAll() argument
618 pcacheTrace(("%p.CLEAN-ALL\n",pCache)); in sqlite3PcacheCleanAll()
619 while( (p = pCache->pDirty)!=0 ){ in sqlite3PcacheCleanAll()
627 void sqlite3PcacheClearWritable(PCache *pCache){ in sqlite3PcacheClearWritable() argument
629 pcacheTrace(("%p.CLEAR-WRITEABLE\n",pCache)); in sqlite3PcacheClearWritable()
630 for(p=pCache->pDirty; p; p=p->pDirtyNext){ in sqlite3PcacheClearWritable()
633 pCache->pSynced = pCache->pDirtyTail; in sqlite3PcacheClearWritable()
639 void sqlite3PcacheClearSyncFlags(PCache *pCache){ in sqlite3PcacheClearSyncFlags() argument
641 for(p=pCache->pDirty; p; p=p->pDirtyNext){ in sqlite3PcacheClearSyncFlags()
644 pCache->pSynced = pCache->pDirtyTail; in sqlite3PcacheClearSyncFlags()
651 PCache *pCache = p->pCache; in sqlite3PcacheMove() local
656 pcacheTrace(("%p.MOVE %d -> %d\n",pCache,p->pgno,newPgno)); in sqlite3PcacheMove()
657 pOther = sqlite3GlobalConfig.pcache2.xFetch(pCache->pCache, newPgno, 0); in sqlite3PcacheMove()
662 pCache->nRefSum++; in sqlite3PcacheMove()
665 sqlite3GlobalConfig.pcache2.xRekey(pCache->pCache, p->pPage, p->pgno,newPgno); in sqlite3PcacheMove()
682 void sqlite3PcacheTruncate(PCache *pCache, Pgno pgno){ in sqlite3PcacheTruncate() argument
683 if( pCache->pCache ){ in sqlite3PcacheTruncate()
686 pcacheTrace(("%p.TRUNCATE %d\n",pCache,pgno)); in sqlite3PcacheTruncate()
687 for(p=pCache->pDirty; p; p=pNext){ in sqlite3PcacheTruncate()
699 if( pgno==0 && pCache->nRefSum ){ in sqlite3PcacheTruncate()
701 pPage1 = sqlite3GlobalConfig.pcache2.xFetch(pCache->pCache,1,0); in sqlite3PcacheTruncate()
704 memset(pPage1->pBuf, 0, pCache->szPage); in sqlite3PcacheTruncate()
708 sqlite3GlobalConfig.pcache2.xTruncate(pCache->pCache, pgno+1); in sqlite3PcacheTruncate()
715 void sqlite3PcacheClose(PCache *pCache){ in sqlite3PcacheClose() argument
716 assert( pCache->pCache!=0 ); in sqlite3PcacheClose()
717 pcacheTrace(("%p.CLOSE\n",pCache)); in sqlite3PcacheClose()
718 sqlite3GlobalConfig.pcache2.xDestroy(pCache->pCache); in sqlite3PcacheClose()
724 void sqlite3PcacheClear(PCache *pCache){ in sqlite3PcacheClear() argument
725 sqlite3PcacheTruncate(pCache, 0); in sqlite3PcacheClear()
804 PgHdr *sqlite3PcacheDirtyList(PCache *pCache){ in sqlite3PcacheDirtyList() argument
806 for(p=pCache->pDirty; p; p=p->pDirtyNext){ in sqlite3PcacheDirtyList()
809 return pcacheSortDirtyList(pCache->pDirty); in sqlite3PcacheDirtyList()
818 int sqlite3PcacheRefCount(PCache *pCache){ in sqlite3PcacheRefCount() argument
819 return pCache->nRefSum; in sqlite3PcacheRefCount()
832 int sqlite3PcachePagecount(PCache *pCache){ in sqlite3PcachePagecount() argument
833 assert( pCache->pCache!=0 ); in sqlite3PcachePagecount()
834 return sqlite3GlobalConfig.pcache2.xPagecount(pCache->pCache); in sqlite3PcachePagecount()
841 int sqlite3PcacheGetCachesize(PCache *pCache){ in sqlite3PcacheGetCachesize() argument
842 return numberOfCachePages(pCache); in sqlite3PcacheGetCachesize()
849 void sqlite3PcacheSetCachesize(PCache *pCache, int mxPage){ in sqlite3PcacheSetCachesize() argument
850 assert( pCache->pCache!=0 ); in sqlite3PcacheSetCachesize()
851 pCache->szCache = mxPage; in sqlite3PcacheSetCachesize()
852 sqlite3GlobalConfig.pcache2.xCachesize(pCache->pCache, in sqlite3PcacheSetCachesize()
853 numberOfCachePages(pCache)); in sqlite3PcacheSetCachesize()
863 assert( p->pCache!=0 ); in sqlite3PcacheSetSpillsize()
878 void sqlite3PcacheShrink(PCache *pCache){ in sqlite3PcacheShrink() argument
879 assert( pCache->pCache!=0 ); in sqlite3PcacheShrink()
880 sqlite3GlobalConfig.pcache2.xShrink(pCache->pCache); in sqlite3PcacheShrink()
893 int sqlite3PCachePercentDirty(PCache *pCache){ in sqlite3PCachePercentDirty() argument
896 int nCache = numberOfCachePages(pCache); in sqlite3PCachePercentDirty()
897 for(pDirty=pCache->pDirty; pDirty; pDirty=pDirty->pDirtyNext) nDirty++; in sqlite3PCachePercentDirty()
905 int sqlite3PCacheIsDirty(PCache *pCache){ in sqlite3PCacheIsDirty() argument
906 return (pCache->pDirty!=0); in sqlite3PCacheIsDirty()
916 void sqlite3PcacheIterateDirty(PCache *pCache, void (*xIter)(PgHdr *)){ in sqlite3PcacheIterateDirty() argument
918 for(pDirty=pCache->pDirty; pDirty; pDirty=pDirty->pDirtyNext){ in sqlite3PcacheIterateDirty()