Lines Matching refs:pPg
36472 PgHdr *pPg;
36480 for(pPg=pCache->pSynced;
36481 pPg && (pPg->nRef || (pPg->flags&PGHDR_NEED_SYNC));
36482 pPg=pPg->pDirtyPrev
36484 pCache->pSynced = pPg;
36485 if( !pPg ){
36486 for(pPg=pCache->pDirtyTail; pPg && pPg->nRef; pPg=pPg->pDirtyPrev);
36488 if( pPg ){
36493 pPg->pgno, pgno,
36497 rc = pCache->xStress(pCache->pStress, pPg);
37121 void *pPg;
37129 pPg = pcache1Alloc(pCache->szPage);
37131 if( !pPg || !p ){
37132 pcache1Free(pPg);
37134 pPg = 0;
37137 pPg = pcache1Alloc(sizeof(PgHdr1) + pCache->szPage + pCache->szExtra);
37138 p = (PgHdr1 *)&((u8 *)pPg)[pCache->szPage];
37142 if( pPg ){
37143 p->page.pBuf = pPg;
37674 sqlite3_pcache_page *pPg,
37678 PgHdr1 *pPage = (PgHdr1 *)pPg;
37714 sqlite3_pcache_page *pPg,
37719 PgHdr1 *pPage = (PgHdr1 *)pPg;
39410 ** Return true if it is necessary to write page *pPg into the sub-journal.
39418 static int subjRequiresPage(PgHdr *pPg){
39419 Pgno pgno = pPg->pgno;
39420 Pager *pPager = pPg->pPager;
39434 static int pageInJournal(PgHdr *pPg){
39435 return sqlite3BitvecTest(pPg->pPager->pInJournal, pPg->pgno);
39591 static void checkPage(PgHdr *pPg){
39592 Pager *pPager = pPg->pPager;
39594 assert( (pPg->flags&PGHDR_DIRTY) || pPg->pageHash==pager_pagehash(pPg) );
40530 PgHdr *pPg; /* An existing page in the cache */
40637 pPg = 0;
40639 pPg = pager_lookup(pPager, pgno);
40641 assert( pPg || !MEMDB );
40642 assert( pPager->eState!=PAGER_OPEN || pPg==0 );
40650 isSynced = (pPg==0 || 0==(pPg->flags & PGHDR_NEED_SYNC));
40657 testcase( !isSavepnt && pPg!=0 && (pPg->flags&PGHDR_NEED_SYNC)!=0 );
40668 }else if( !isMainJrnl && pPg==0 ){
40688 rc = sqlite3PagerAcquire(pPager, pgno, &pPg, 1);
40692 pPg->flags &= ~PGHDR_NEED_READ;
40693 sqlite3PcacheMakeDirty(pPg);
40695 if( pPg ){
40703 pData = pPg->pData;
40705 pPager->xReiniter(pPg);
40727 sqlite3PcacheMakeClean(pPg);
40729 pager_set_pagehash(pPg);
40738 CODEC1(pPager, pData, pPg->pgno, 3, rc=SQLITE_NOMEM);
40739 sqlite3PcacheRelease(pPg);
41223 ** Read the content for page pPg out of the database file and into
41224 ** pPg->pData. A shared lock or greater must be held on the database
41233 static int readDbPage(PgHdr *pPg){
41234 Pager *pPager = pPg->pPager; /* Pager object associated with page pPg */
41235 Pgno pgno = pPg->pgno; /* Page number to read */
41245 memset(pPg->pData, 0, pPager->pageSize);
41251 rc = sqlite3WalRead(pPager->pWal, pgno, &isInWal, pgsz, pPg->pData);
41255 rc = sqlite3OsRead(pPager->fd, pPg->pData, pgsz, iOffset);
41277 u8 *dbFileVers = &((u8*)pPg->pData)[24];
41281 CODEC1(pPager, pPg->pData, pgno, 3, rc = SQLITE_NOMEM);
41287 PAGERID(pPager), pgno, pager_pagehash(pPg)));
41300 static void pager_write_changecounter(PgHdr *pPg){
41304 change_counter = sqlite3Get4byte((u8*)pPg->pPager->dbFileVers)+1;
41305 put32bits(((char*)pPg->pData)+24, change_counter);
41310 put32bits(((char*)pPg->pData)+92, change_counter);
41311 put32bits(((char*)pPg->pData)+96, SQLITE_VERSION_NUMBER);
41330 PgHdr *pPg;
41332 pPg = sqlite3PagerLookup(pPager, iPg);
41333 if( pPg ){
41334 if( sqlite3PcachePageRefcount(pPg)==1 ){
41335 sqlite3PcacheDrop(pPg);
41337 rc = readDbPage(pPg);
41339 pPager->xReiniter(pPg);
41341 sqlite3PagerUnref(pPg);
42121 static void assertTruncateConstraintCb(PgHdr *pPg){
42122 assert( pPg->flags&PGHDR_DIRTY );
42123 assert( !subjRequiresPage(pPg) || pPg->pgno<=pPg->pPager->dbSize );
42239 ** Return the page number for page pPg.
42241 SQLITE_PRIVATE Pgno sqlite3PagerPagenumber(DbPage *pPg){
42242 return pPg->pgno;
42247 ** Increment the reference count for page pPg.
42249 SQLITE_PRIVATE void sqlite3PagerRef(DbPage *pPg){
42250 sqlite3PcacheRef(pPg);
42532 ** Append a record of the current state of page pPg to the sub-journal.
42536 ** If successful, set the bit corresponding to pPg->pgno in the bitvecs
42544 static int subjournalPage(PgHdr *pPg){
42546 Pager *pPager = pPg->pPager;
42554 || pageInJournal(pPg)
42555 || pPg->pgno>pPager->dbOrigSize
42562 void *pData = pPg->pData;
42566 CODEC2(pPager, pData, pPg->pgno, 7, return SQLITE_NOMEM, pData2);
42567 PAGERTRACE(("STMT-JOURNAL %d page %d\n", PAGERID(pPager), pPg->pgno));
42568 rc = write32bits(pPager->sjfd, offset, pPg->pgno);
42577 rc = addToSavepointBitvecs(pPager, pPg->pgno);
42591 ** The job of this function is to make pPg clean by writing its contents
42601 static int pagerStress(void *p, PgHdr *pPg){
42605 assert( pPg->pPager==pPager );
42606 assert( pPg->flags&PGHDR_DIRTY );
42625 if( pPager->doNotSyncSpill && (pPg->flags & PGHDR_NEED_SYNC)!=0 ){
42629 pPg->pDirty = 0;
42632 if( subjRequiresPage(pPg) ){
42633 rc = subjournalPage(pPg);
42636 rc = pagerWalFrames(pPager, pPg, 0, 0);
42641 if( pPg->flags&PGHDR_NEED_SYNC
42675 rc==SQLITE_OK && pPg->pgno>pPager->dbSize && subjRequiresPage(pPg)
42677 rc = subjournalPage(pPg);
42682 assert( (pPg->flags&PGHDR_NEED_SYNC)==0 );
42683 rc = pager_write_pagelist(pPager, pPg);
42689 PAGERTRACE(("STRESS %d page %d\n", PAGERID(pPager), pPg->pgno));
42690 sqlite3PcacheMakeClean(pPg);
43427 PgHdr *pPg;
43447 ** Set pPg to 0 and jump to the exception handler. */
43448 pPg = 0;
43465 pPg = *ppPage;
43466 pPg->pPager = pPager;
43496 memset(pPg->pData, 0, pPager->pageSize);
43499 assert( pPg->pPager==pPager );
43501 rc = readDbPage(pPg);
43506 pager_set_pagehash(pPg);
43513 if( pPg ){
43514 sqlite3PcacheDrop(pPg);
43534 PgHdr *pPg = 0;
43539 sqlite3PcacheFetch(pPager->pPCache, pgno, 0, &pPg);
43540 return pPg;
43551 SQLITE_PRIVATE void sqlite3PagerUnref(DbPage *pPg){
43552 if( pPg ){
43553 Pager *pPager = pPg->pPager;
43554 sqlite3PcacheRelease(pPg);
43737 static int pager_write(PgHdr *pPg){
43738 void *pData = pPg->pData;
43739 Pager *pPager = pPg->pPager;
43760 CHECK_PAGE(pPg);
43781 sqlite3PcacheMakeDirty(pPg);
43782 if( pageInJournal(pPg) && !subjRequiresPage(pPg) ){
43790 if( !pageInJournal(pPg) && !pagerUseWal(pPager) ){
43792 if( pPg->pgno<=pPager->dbOrigSize && isOpen(pPager->jfd) ){
43800 assert( pPg->pgno!=PAGER_MJ_PGNO(pPager) );
43803 CODEC2(pPager, pData, pPg->pgno, 7, return SQLITE_NOMEM, pData2);
43813 pPg->flags |= PGHDR_NEED_SYNC;
43815 rc = write32bits(pPager->jfd, iOff, pPg->pgno);
43822 IOTRACE(("JOUT %p %d %lld %d\n", pPager, pPg->pgno,
43826 PAGERID(pPager), pPg->pgno,
43827 ((pPg->flags&PGHDR_NEED_SYNC)?1:0), pager_pagehash(pPg)));
43832 rc = sqlite3BitvecSet(pPager->pInJournal, pPg->pgno);
43835 rc |= addToSavepointBitvecs(pPager, pPg->pgno);
43842 pPg->flags |= PGHDR_NEED_SYNC;
43845 PAGERID(pPager), pPg->pgno,
43846 ((pPg->flags&PGHDR_NEED_SYNC)?1:0)));
43855 if( subjRequiresPage(pPg) ){
43856 rc = subjournalPage(pPg);
43862 if( pPager->dbSize<pPg->pgno ){
43863 pPager->dbSize = pPg->pgno;
43885 PgHdr *pPg = pDbPage;
43886 Pager *pPager = pPg->pPager;
43895 Pgno pg1; /* First page of the sector pPg is located on. */
43910 ** of the first page of the sector pPg is located on.
43912 pg1 = ((pPg->pgno-1) & ~(nPagePerSector-1)) + 1;
43915 if( pPg->pgno>nPageCount ){
43916 nPage = (pPg->pgno - pg1)+1;
43923 assert(pg1<=pPg->pgno);
43924 assert((pg1+nPage)>pPg->pgno);
43929 if( pg==pPg->pgno || !sqlite3BitvecTest(pPager->pInJournal, pg) ){
43979 SQLITE_PRIVATE int sqlite3PagerIswriteable(DbPage *pPg){
43980 return pPg->flags&PGHDR_DIRTY;
43986 ** write the information on page pPg back to the disk, even though
43998 SQLITE_PRIVATE void sqlite3PagerDontWrite(PgHdr *pPg){
43999 Pager *pPager = pPg->pPager;
44000 if( (pPg->flags&PGHDR_DIRTY) && pPager->nSavepoint==0 ){
44001 PAGERTRACE(("DONT_WRITE page %d of %d\n", pPg->pgno, PAGERID(pPager)));
44002 IOTRACE(("CLEAN %p %d\n", pPager, pPg->pgno))
44003 pPg->flags |= PGHDR_DONT_WRITE;
44004 pager_set_pagehash(pPg);
44245 PgHdr *pPg;
44253 && (0==(pPg = sqlite3PcacheDirtyList(pPager->pPCache)) || 0==pPg->pDirty)
44768 ** Move the page pPg to location pgno in the file.
44775 ** References to the page pPg remain valid. Updating any
44776 ** meta-data associated with pPg (i.e. data stored in the nExtra bytes
44787 ** pPg refers to will not be written to again within this transaction.
44792 SQLITE_PRIVATE int sqlite3PagerMovepage(Pager *pPager, DbPage *pPg, Pgno pgno, int isCommit){
44794 Pgno needSyncPgno = 0; /* Old value of pPg->pgno, if sync is required */
44798 assert( pPg->nRef>0 );
44808 rc = sqlite3PagerWrite(pPg);
44826 ** subjournalPage() may need to allocate space to store pPg->pgno into
44830 if( pPg->flags&PGHDR_DIRTY
44831 && subjRequiresPage(pPg)
44832 && SQLITE_OK!=(rc = subjournalPage(pPg))
44838 PAGERID(pPager), pPg->pgno, (pPg->flags&PGHDR_NEED_SYNC)?1:0, pgno));
44839 IOTRACE(("MOVE %p %d %d\n", pPager, pPg->pgno, pgno))
44841 /* If the journal needs to be sync()ed before page pPg->pgno can
44842 ** be written to, store pPg->pgno in local variable needSyncPgno.
44845 ** the journal needs to be sync()ed before database page pPg->pgno
44848 if( (pPg->flags&PGHDR_NEED_SYNC) && !isCommit ){
44849 needSyncPgno = pPg->pgno;
44850 assert( pageInJournal(pPg) || pPg->pgno>pPager->dbOrigSize );
44851 assert( pPg->flags&PGHDR_DIRTY );
44859 pPg->flags &= ~PGHDR_NEED_SYNC;
44863 pPg->flags |= (pPgOld->flags&PGHDR_NEED_SYNC);
44873 origPgno = pPg->pgno;
44874 sqlite3PcacheMove(pPg, pgno);
44875 sqlite3PcacheMakeDirty(pPg);
44923 SQLITE_PRIVATE void *sqlite3PagerGetData(DbPage *pPg){
44924 assert( pPg->nRef>0 || pPg->pPager->memDb );
44925 return pPg->pData;
44932 SQLITE_PRIVATE void *sqlite3PagerGetExtra(DbPage *pPg){
44933 return pPg->pExtra;
45322 SQLITE_PRIVATE void *sqlite3PagerCodec(PgHdr *pPg){
45324 CODEC2(pPg->pPager, pPg->pData, pPg->pgno, 6, return 0, aData);
52339 MemPage *pPg;
52340 rc = btreeGetPage(pBt, iLastPg, &pPg, 0);
52344 rc = sqlite3PagerWrite(pPg->pDbPage);
52345 releasePage(pPg);
54416 MemPage *pPg = 0;
54419 rc = btreeGetPage(pBt, pBt->nPage, &pPg, 1);
54421 rc = sqlite3PagerWrite(pPg->pDbPage);
54422 releasePage(pPg);