Lines Matching refs:pPg

1068 static int subjRequiresPage(PgHdr *pPg){  in subjRequiresPage()  argument
1069 Pager *pPager = pPg->pPager; in subjRequiresPage()
1071 Pgno pgno = pPg->pgno; in subjRequiresPage()
1089 static int pageInJournal(Pager *pPager, PgHdr *pPg){ in pageInJournal() argument
1090 return sqlite3BitvecTest(pPager->pInJournal, pPg->pgno); in pageInJournal()
1263 static void checkPage(PgHdr *pPg){ in checkPage() argument
1264 Pager *pPager = pPg->pPager; in checkPage()
1266 assert( (pPg->flags&PGHDR_DIRTY) || pPg->pageHash==pager_pagehash(pPg) ); in checkPage()
2247 PgHdr *pPg; /* An existing page in the cache */ in pager_playback_one_page() local
2353 pPg = 0; in pager_playback_one_page()
2355 pPg = sqlite3PagerLookup(pPager, pgno); in pager_playback_one_page()
2357 assert( pPg || !MEMDB ); in pager_playback_one_page()
2358 assert( pPager->eState!=PAGER_OPEN || pPg==0 || pPager->tempFile ); in pager_playback_one_page()
2366 isSynced = (pPg==0 || 0==(pPg->flags & PGHDR_NEED_SYNC)); in pager_playback_one_page()
2373 testcase( !isSavepnt && pPg!=0 && (pPg->flags&PGHDR_NEED_SYNC)!=0 ); in pager_playback_one_page()
2390 }else if( !isMainJrnl && pPg==0 ){ in pager_playback_one_page()
2410 rc = sqlite3PagerGet(pPager, pgno, &pPg, 1); in pager_playback_one_page()
2414 sqlite3PcacheMakeDirty(pPg); in pager_playback_one_page()
2416 if( pPg ){ in pager_playback_one_page()
2424 pData = pPg->pData; in pager_playback_one_page()
2426 pPager->xReiniter(pPg); in pager_playback_one_page()
2431 pager_set_pagehash(pPg); in pager_playback_one_page()
2438 sqlite3PcacheRelease(pPg); in pager_playback_one_page()
2968 static int readDbPage(PgHdr *pPg){ in readDbPage() argument
2969 Pager *pPager = pPg->pPager; /* Pager object associated with page pPg */ in readDbPage()
2979 rc = sqlite3WalFindFrame(pPager->pWal, pPg->pgno, &iFrame); in readDbPage()
2983 rc = sqlite3WalReadFrame(pPager->pWal, iFrame,pPager->pageSize,pPg->pData); in readDbPage()
2987 i64 iOffset = (pPg->pgno-1)*(i64)pPager->pageSize; in readDbPage()
2988 rc = sqlite3OsRead(pPager->fd, pPg->pData, pPager->pageSize, iOffset); in readDbPage()
2994 if( pPg->pgno==1 ){ in readDbPage()
3010 u8 *dbFileVers = &((u8*)pPg->pData)[24]; in readDbPage()
3016 IOTRACE(("PGIN %p %d\n", pPager, pPg->pgno)); in readDbPage()
3018 PAGERID(pPager), pPg->pgno, pager_pagehash(pPg))); in readDbPage()
3031 static void pager_write_changecounter(PgHdr *pPg){ in pager_write_changecounter() argument
3033 if( NEVER(pPg==0) ) return; in pager_write_changecounter()
3036 change_counter = sqlite3Get4byte((u8*)pPg->pPager->dbFileVers)+1; in pager_write_changecounter()
3037 put32bits(((char*)pPg->pData)+24, change_counter); in pager_write_changecounter()
3042 put32bits(((char*)pPg->pData)+92, change_counter); in pager_write_changecounter()
3043 put32bits(((char*)pPg->pData)+96, SQLITE_VERSION_NUMBER); in pager_write_changecounter()
3062 PgHdr *pPg; in pagerUndoCallback() local
3065 pPg = sqlite3PagerLookup(pPager, iPg); in pagerUndoCallback()
3066 if( pPg ){ in pagerUndoCallback()
3067 if( sqlite3PcachePageRefcount(pPg)==1 ){ in pagerUndoCallback()
3068 sqlite3PcacheDrop(pPg); in pagerUndoCallback()
3070 rc = readDbPage(pPg); in pagerUndoCallback()
3072 pPager->xReiniter(pPg); in pagerUndoCallback()
3074 sqlite3PagerUnrefNotNull(pPg); in pagerUndoCallback()
3923 static void assertTruncateConstraintCb(PgHdr *pPg){ in assertTruncateConstraintCb() argument
3924 Pager *pPager = pPg->pPager; in assertTruncateConstraintCb()
3925 assert( pPg->flags&PGHDR_DIRTY ); in assertTruncateConstraintCb()
3926 if( pPg->pgno>pPager->dbSize ){ /* if (a) is false */ in assertTruncateConstraintCb()
3927 Pgno pgno = pPg->pgno; in assertTruncateConstraintCb()
3929 for(i=0; i<pPg->pPager->nSavepoint; i++){ in assertTruncateConstraintCb()
4050 static void pagerReleaseMapPage(PgHdr *pPg){ in pagerReleaseMapPage() argument
4051 Pager *pPager = pPg->pPager; in pagerReleaseMapPage()
4053 pPg->pDirty = pPager->pMmapFreelist; in pagerReleaseMapPage()
4054 pPager->pMmapFreelist = pPg; in pagerReleaseMapPage()
4057 sqlite3OsUnfetch(pPager->fd, (i64)(pPg->pgno-1)*pPager->pageSize, pPg->pData); in pagerReleaseMapPage()
4172 Pgno sqlite3PagerPagenumber(DbPage *pPg){ in sqlite3PagerPagenumber() argument
4173 return pPg->pgno; in sqlite3PagerPagenumber()
4180 void sqlite3PagerRef(DbPage *pPg){ in sqlite3PagerRef() argument
4181 sqlite3PcacheRef(pPg); in sqlite3PagerRef()
4479 static int subjournalPage(PgHdr *pPg){ in subjournalPage() argument
4481 Pager *pPager = pPg->pPager; in subjournalPage()
4489 || pageInJournal(pPager, pPg) in subjournalPage()
4490 || pPg->pgno>pPager->dbOrigSize in subjournalPage()
4497 void *pData = pPg->pData; in subjournalPage()
4501 PAGERTRACE(("STMT-JOURNAL %d page %d\n", PAGERID(pPager), pPg->pgno)); in subjournalPage()
4502 rc = write32bits(pPager->sjfd, offset, pPg->pgno); in subjournalPage()
4511 rc = addToSavepointBitvecs(pPager, pPg->pgno); in subjournalPage()
4515 static int subjournalPageIfRequired(PgHdr *pPg){ in subjournalPageIfRequired() argument
4516 if( subjRequiresPage(pPg) ){ in subjournalPageIfRequired()
4517 return subjournalPage(pPg); in subjournalPageIfRequired()
4542 static int pagerStress(void *p, PgHdr *pPg){ in pagerStress() argument
4546 assert( pPg->pPager==pPager ); in pagerStress()
4547 assert( pPg->flags&PGHDR_DIRTY ); in pagerStress()
4571 || (pPg->flags & PGHDR_NEED_SYNC)!=0) in pagerStress()
4577 pPg->pDirty = 0; in pagerStress()
4580 rc = subjournalPageIfRequired(pPg); in pagerStress()
4582 rc = pagerWalFrames(pPager, pPg, 0, 0); in pagerStress()
4594 if( pPg->flags&PGHDR_NEED_SYNC in pagerStress()
4602 assert( (pPg->flags&PGHDR_NEED_SYNC)==0 ); in pagerStress()
4603 rc = pager_write_pagelist(pPager, pPg); in pagerStress()
4609 PAGERTRACE(("STRESS %d page %d\n", PAGERID(pPager), pPg->pgno)); in pagerStress()
4610 sqlite3PcacheMakeClean(pPg); in pagerStress()
5489 PgHdr *pPg; in getPageNormal() local
5501 pPg = 0; in getPageNormal()
5509 pPg = *ppPage = sqlite3PcacheFetchFinish(pPager->pPCache, pgno, pBase); in getPageNormal()
5510 assert( pPg==(*ppPage) ); in getPageNormal()
5511 assert( pPg->pgno==pgno ); in getPageNormal()
5512 assert( pPg->pPager==pPager || pPg->pPager==0 ); in getPageNormal()
5515 if( pPg->pPager && !noContent ){ in getPageNormal()
5534 pPg->pPager = pPager; in getPageNormal()
5558 memset(pPg->pData, 0, pPager->pageSize); in getPageNormal()
5561 assert( pPg->pPager==pPager ); in getPageNormal()
5563 rc = readDbPage(pPg); in getPageNormal()
5568 pager_set_pagehash(pPg); in getPageNormal()
5574 if( pPg ){ in getPageNormal()
5575 sqlite3PcacheDrop(pPg); in getPageNormal()
5591 PgHdr *pPg = 0; in getPageMMap() local
5630 pPg = sqlite3PagerLookup(pPager, pgno); in getPageMMap()
5632 if( pPg==0 ){ in getPageMMap()
5633 rc = pagerAcquireMapPage(pPager, pgno, pData, &pPg); in getPageMMap()
5637 if( pPg ){ in getPageMMap()
5639 *ppPage = pPg; in getPageMMap()
5713 void sqlite3PagerUnrefNotNull(DbPage *pPg){ in sqlite3PagerUnrefNotNull() argument
5714 TESTONLY( Pager *pPager = pPg->pPager; ) in sqlite3PagerUnrefNotNull()
5715 assert( pPg!=0 ); in sqlite3PagerUnrefNotNull()
5716 if( pPg->flags & PGHDR_MMAP ){ in sqlite3PagerUnrefNotNull()
5717 assert( pPg->pgno!=1 ); /* Page1 is never memory mapped */ in sqlite3PagerUnrefNotNull()
5718 pagerReleaseMapPage(pPg); in sqlite3PagerUnrefNotNull()
5720 sqlite3PcacheRelease(pPg); in sqlite3PagerUnrefNotNull()
5725 void sqlite3PagerUnref(DbPage *pPg){ in sqlite3PagerUnref() argument
5726 if( pPg ) sqlite3PagerUnrefNotNull(pPg); in sqlite3PagerUnref()
5728 void sqlite3PagerUnrefPageOne(DbPage *pPg){ in sqlite3PagerUnrefPageOne() argument
5730 assert( pPg!=0 ); in sqlite3PagerUnrefPageOne()
5731 assert( pPg->pgno==1 ); in sqlite3PagerUnrefPageOne()
5732 assert( (pPg->flags & PGHDR_MMAP)==0 ); /* Page1 is never memory mapped */ in sqlite3PagerUnrefPageOne()
5733 pPager = pPg->pPager; in sqlite3PagerUnrefPageOne()
5734 sqlite3PcacheRelease(pPg); in sqlite3PagerUnrefPageOne()
5920 static SQLITE_NOINLINE int pagerAddPageToRollbackJournal(PgHdr *pPg){ in pagerAddPageToRollbackJournal() argument
5921 Pager *pPager = pPg->pPager; in pagerAddPageToRollbackJournal()
5930 assert( pPg->pgno!=PAGER_SJ_PGNO(pPager) ); in pagerAddPageToRollbackJournal()
5933 pData2 = pPg->pData; in pagerAddPageToRollbackJournal()
5943 pPg->flags |= PGHDR_NEED_SYNC; in pagerAddPageToRollbackJournal()
5945 rc = write32bits(pPager->jfd, iOff, pPg->pgno); in pagerAddPageToRollbackJournal()
5952 IOTRACE(("JOUT %p %d %lld %d\n", pPager, pPg->pgno, in pagerAddPageToRollbackJournal()
5956 PAGERID(pPager), pPg->pgno, in pagerAddPageToRollbackJournal()
5957 ((pPg->flags&PGHDR_NEED_SYNC)?1:0), pager_pagehash(pPg))); in pagerAddPageToRollbackJournal()
5962 rc = sqlite3BitvecSet(pPager->pInJournal, pPg->pgno); in pagerAddPageToRollbackJournal()
5965 rc |= addToSavepointBitvecs(pPager, pPg->pgno); in pagerAddPageToRollbackJournal()
5977 static int pager_write(PgHdr *pPg){ in pager_write() argument
5978 Pager *pPager = pPg->pPager; in pager_write()
5992 CHECK_PAGE(pPg); in pager_write()
6011 sqlite3PcacheMakeDirty(pPg); in pager_write()
6019 && sqlite3BitvecTestNotNull(pPager->pInJournal, pPg->pgno)==0 in pager_write()
6022 if( pPg->pgno<=pPager->dbOrigSize ){ in pager_write()
6023 rc = pagerAddPageToRollbackJournal(pPg); in pager_write()
6029 pPg->flags |= PGHDR_NEED_SYNC; in pager_write()
6032 PAGERID(pPager), pPg->pgno, in pager_write()
6033 ((pPg->flags&PGHDR_NEED_SYNC)?1:0))); in pager_write()
6042 pPg->flags |= PGHDR_WRITEABLE; in pager_write()
6048 rc = subjournalPageIfRequired(pPg); in pager_write()
6052 if( pPager->dbSize<pPg->pgno ){ in pager_write()
6053 pPager->dbSize = pPg->pgno; in pager_write()
6069 static SQLITE_NOINLINE int pagerWriteLargeSector(PgHdr *pPg){ in pagerWriteLargeSector() argument
6076 Pager *pPager = pPg->pPager; /* The pager that owns pPg */ in pagerWriteLargeSector()
6091 pg1 = ((pPg->pgno-1) & ~(nPagePerSector-1)) + 1; in pagerWriteLargeSector()
6094 if( pPg->pgno>nPageCount ){ in pagerWriteLargeSector()
6095 nPage = (pPg->pgno - pg1)+1; in pagerWriteLargeSector()
6102 assert(pg1<=pPg->pgno); in pagerWriteLargeSector()
6103 assert((pg1+nPage)>pPg->pgno); in pagerWriteLargeSector()
6108 if( pg==pPg->pgno || !sqlite3BitvecTest(pPager->pInJournal, pg) ){ in pagerWriteLargeSector()
6163 int sqlite3PagerWrite(PgHdr *pPg){ in sqlite3PagerWrite() argument
6164 Pager *pPager = pPg->pPager; in sqlite3PagerWrite()
6165 assert( (pPg->flags & PGHDR_MMAP)==0 ); in sqlite3PagerWrite()
6168 if( (pPg->flags & PGHDR_WRITEABLE)!=0 && pPager->dbSize>=pPg->pgno ){ in sqlite3PagerWrite()
6169 if( pPager->nSavepoint ) return subjournalPageIfRequired(pPg); in sqlite3PagerWrite()
6175 return pagerWriteLargeSector(pPg); in sqlite3PagerWrite()
6177 return pager_write(pPg); in sqlite3PagerWrite()
6187 int sqlite3PagerIswriteable(DbPage *pPg){ in sqlite3PagerIswriteable() argument
6188 return pPg->flags & PGHDR_WRITEABLE; in sqlite3PagerIswriteable()
6212 void sqlite3PagerDontWrite(PgHdr *pPg){ in sqlite3PagerDontWrite() argument
6213 Pager *pPager = pPg->pPager; in sqlite3PagerDontWrite()
6214 if( !pPager->tempFile && (pPg->flags&PGHDR_DIRTY) && pPager->nSavepoint==0 ){ in sqlite3PagerDontWrite()
6215 PAGERTRACE(("DONT_WRITE page %d of %d\n", pPg->pgno, PAGERID(pPager))); in sqlite3PagerDontWrite()
6216 IOTRACE(("CLEAN %p %d\n", pPager, pPg->pgno)) in sqlite3PagerDontWrite()
6217 pPg->flags |= PGHDR_DONT_WRITE; in sqlite3PagerDontWrite()
6218 pPg->flags &= ~PGHDR_WRITEABLE; in sqlite3PagerDontWrite()
6219 testcase( pPg->flags & PGHDR_NEED_SYNC ); in sqlite3PagerDontWrite()
6220 pager_set_pagehash(pPg); in sqlite3PagerDontWrite()
6487 PgHdr *pPg; in sqlite3PagerCommitPhaseOne() local
6495 && (!(pPg = sqlite3PcacheDirtyList(pPager->pPCache)) || 0==pPg->pDirty) in sqlite3PagerCommitPhaseOne()
7076 int sqlite3PagerMovepage(Pager *pPager, DbPage *pPg, Pgno pgno, int isCommit){ in sqlite3PagerMovepage() argument
7082 assert( pPg->nRef>0 ); in sqlite3PagerMovepage()
7093 rc = sqlite3PagerWrite(pPg); in sqlite3PagerMovepage()
7115 if( (pPg->flags & PGHDR_DIRTY)!=0 in sqlite3PagerMovepage()
7116 && SQLITE_OK!=(rc = subjournalPageIfRequired(pPg)) in sqlite3PagerMovepage()
7122 PAGERID(pPager), pPg->pgno, (pPg->flags&PGHDR_NEED_SYNC)?1:0, pgno)); in sqlite3PagerMovepage()
7123 IOTRACE(("MOVE %p %d %d\n", pPager, pPg->pgno, pgno)) in sqlite3PagerMovepage()
7132 if( (pPg->flags&PGHDR_NEED_SYNC) && !isCommit ){ in sqlite3PagerMovepage()
7133 needSyncPgno = pPg->pgno; in sqlite3PagerMovepage()
7135 pageInJournal(pPager, pPg) || pPg->pgno>pPager->dbOrigSize ); in sqlite3PagerMovepage()
7136 assert( pPg->flags&PGHDR_DIRTY ); in sqlite3PagerMovepage()
7144 pPg->flags &= ~PGHDR_NEED_SYNC; in sqlite3PagerMovepage()
7152 pPg->flags |= (pPgOld->flags&PGHDR_NEED_SYNC); in sqlite3PagerMovepage()
7162 origPgno = pPg->pgno; in sqlite3PagerMovepage()
7163 sqlite3PcacheMove(pPg, pgno); in sqlite3PagerMovepage()
7164 sqlite3PcacheMakeDirty(pPg); in sqlite3PagerMovepage()
7214 void sqlite3PagerRekey(DbPage *pPg, Pgno iNew, u16 flags){ in sqlite3PagerRekey() argument
7215 assert( pPg->pgno!=iNew ); in sqlite3PagerRekey()
7216 pPg->flags = flags; in sqlite3PagerRekey()
7217 sqlite3PcacheMove(pPg, iNew); in sqlite3PagerRekey()
7223 void *sqlite3PagerGetData(DbPage *pPg){ in sqlite3PagerGetData() argument
7224 assert( pPg->nRef>0 || pPg->pPager->memDb ); in sqlite3PagerGetData()
7225 return pPg->pData; in sqlite3PagerGetData()
7232 void *sqlite3PagerGetExtra(DbPage *pPg){ in sqlite3PagerGetExtra() argument
7233 return pPg->pExtra; in sqlite3PagerGetExtra()