Lines Matching refs:pPage

373 static const unsigned char *PageData(DbPage *pPage, unsigned iOffset){
374 assert( iOffset<=pPage->nPageSize );
375 return (unsigned char *)pPage->pData + iOffset;
383 static const unsigned char *PageHeader(DbPage *pPage){
384 if( pPage->pgno==1 ){
386 return PageData(pPage, nDatabaseHeader);
388 return PageData(pPage, 0);
621 DbPage *pPage; /* Reference to leaf page. */
633 if( p->pPage ){
634 sqlite3PagerUnref(p->pPage);
635 p->pPage = NULL;
643 /* Internal helper. Reset storage in preparation for iterating pPage. */
645 DbPage *pPage){
646 assert( PageHeader(pPage)[kiPageTypeOffset]==kTableInteriorPage );
648 if( pCursor->pPage ){
649 sqlite3PagerUnref(pCursor->pPage);
650 pCursor->pPage = NULL;
652 pCursor->pPage = pPage;
660 pCursor->nChildren = decodeUnsigned16(PageHeader(pPage) +
665 DbPage *pPage, int nPageSize,
676 interiorCursorSetPage(pCursor, pPage);
690 pPageHeader = PageHeader(pCursor->pPage);
703 return decodeUnsigned32(PageData(pCursor->pPage, iCellOffset));
727 while( pCursor && pCursor->pPage->pgno!=iPage ){
763 int rc = sqlite3PagerAcquire(pCursor->pPage->pPager, iPage, ppPage, 0);
817 DbPage *pPage;
826 if( p->pPage ){
827 sqlite3PagerUnref(p->pPage);
828 p->pPage = NULL;
838 while( pOverflow && pOverflow->pPage->pgno!=iPage ){
845 * in pPage. If nRecordBytes can be satisfied entirely from pPage,
849 * bytes local to pPage.
854 static int overflowMaybeCreate(DbPage *pPage, unsigned nPageSize,
896 decodeUnsigned32(PageData(pPage, iRecordOffset + nLocalRecordBytes));
907 rc = sqlite3PagerAcquire(pPage->pPager, iNextPage, &pPage, 0);
914 sqlite3PagerUnref(pPage);
919 pOverflow->pPage = pPage;
929 iNextPage = decodeUnsigned32(pPage->pData);
961 * of a potentially-overflowing record. pPage and iRecordOffset are
971 /* Operation of this function is subtle. At any time, pPage is the
973 * data within pPage, and pOverflow being the overflow page after
974 * pPage. This allows the code to handle both the initial leaf page
978 static int overflowGetSegment(DbPage *pPage, unsigned iRecordOffset,
992 pPage = pOverflow->pPage;
1005 *ppBase = (unsigned char *)PageData(pPage, iRecordOffset + iRequestOffset);
1031 memcpy(pBase + nBase, PageData(pPage, iRecordOffset + iRequestOffset),
1042 pPage = pOverflow->pPage;
1085 DbPage *pPage; /* Reference to leaf page. */
1086 unsigned nPageSize; /* Size of pPage. */
1087 unsigned nCells; /* Number of cells in pPage. */
1108 * pPage is a leaf page, it will be stored in the cursor and state
1111 * If pPage is an interior page, a new parent cursor is created and
1115 * If pPage is not a table page at all, it is discarded.
1117 * If SQLITE_OK is returned, the caller no longer owns pPage,
1120 static int leafCursorLoadPage(RecoverLeafCursor *pCursor, DbPage *pPage){
1121 const unsigned char *pPageHeader; /* Header of *pPage */
1124 if( pCursor->pPage ){
1125 sqlite3PagerUnref(pCursor->pPage);
1126 pCursor->pPage = NULL;
1133 pPageHeader = PageHeader(pPage);
1136 int rc = interiorCursorCreate(pCursor->pParent, pPage, pCursor->nPageSize,
1147 sqlite3PagerUnref(pPage);
1152 pCursor->pPage = pPage;
1181 } while( !pCursor->pPage );
1207 if( pCursor->pPage ){
1208 sqlite3PagerUnref(pCursor->pPage);
1209 pCursor->pPage = NULL;
1224 * - pPage is a valid leaf page with no valid cells.
1225 * - pPage is a valid interior page with no valid leaves.
1226 * - pPage is a valid interior page who's leaves contain no valid cells.
1227 * - pPage is not a valid leaf or interior page.
1231 DbPage *pPage; /* Reference to page at iRootPage. */
1236 rc = sqlite3PagerAcquire(pPager, iRootPage, &pPage, 0);
1243 sqlite3PagerUnref(pPage);
1250 rc = leafCursorLoadPage(pCursor, pPage);
1252 sqlite3PagerUnref(pPage);
1257 /* pPage wasn't a leaf page, find the next leaf page. */
1258 if( !pCursor->pPage ){
1299 pPageHeader = PageHeader(pCursor->pPage);
1301 pPageEnd = PageData(pCursor->pPage, pCursor->nPageSize);
1310 pCell = PageData(pCursor->pPage, iCellOffset);
1336 rc = overflowMaybeCreate(pCursor->pPage, pCursor->nPageSize,
1358 rc = overflowGetSegment(pCursor->pPage,
1478 return overflowGetSegment(pCursor->pPage, pCursor->iRecordOffset,
1639 pCursor->bEOF = (pLeafCursor->pPage==NULL);