Lines Matching refs:pCsr

289   StatCursor *pCsr;  in statOpen()  local
291 pCsr = (StatCursor *)sqlite3_malloc64(sizeof(StatCursor)); in statOpen()
292 if( pCsr==0 ){ in statOpen()
295 memset(pCsr, 0, sizeof(StatCursor)); in statOpen()
296 pCsr->base.pVtab = pVTab; in statOpen()
297 pCsr->iDb = pTab->iDb; in statOpen()
300 *ppCursor = (sqlite3_vtab_cursor *)pCsr; in statOpen()
324 static void statResetCsr(StatCursor *pCsr){ in statResetCsr() argument
330 for(i=0; i<ArraySize(pCsr->aPage); i++){ in statResetCsr()
331 statClearPage(&pCsr->aPage[i]); in statResetCsr()
332 sqlite3_free(pCsr->aPage[i].aPg); in statResetCsr()
333 pCsr->aPage[i].aPg = 0; in statResetCsr()
335 sqlite3_reset(pCsr->pStmt); in statResetCsr()
336 pCsr->iPage = 0; in statResetCsr()
337 sqlite3_free(pCsr->zPath); in statResetCsr()
338 pCsr->zPath = 0; in statResetCsr()
339 pCsr->isEof = 0; in statResetCsr()
343 static void statResetCounts(StatCursor *pCsr){ in statResetCounts() argument
344 pCsr->nCell = 0; in statResetCounts()
345 pCsr->nMxPayload = 0; in statResetCounts()
346 pCsr->nUnused = 0; in statResetCounts()
347 pCsr->nPayload = 0; in statResetCounts()
348 pCsr->szPage = 0; in statResetCounts()
349 pCsr->nPage = 0; in statResetCounts()
356 StatCursor *pCsr = (StatCursor *)pCursor; in statClose() local
357 statResetCsr(pCsr); in statClose()
358 sqlite3_finalize(pCsr->pStmt); in statClose()
359 sqlite3_free(pCsr); in statClose()
508 static void statSizeAndOffset(StatCursor *pCsr){ in statSizeAndOffset() argument
509 StatTable *pTab = (StatTable *)((sqlite3_vtab_cursor *)pCsr)->pVtab; in statSizeAndOffset()
519 x[0] = pCsr->iPageno; in statSizeAndOffset()
521 pCsr->iOffset = x[0]; in statSizeAndOffset()
522 pCsr->szPage += x[1]; in statSizeAndOffset()
525 pCsr->szPage += sqlite3BtreeGetPageSize(pBt); in statSizeAndOffset()
526 pCsr->iOffset = (i64)pCsr->szPage * (pCsr->iPageno - 1); in statSizeAndOffset()
571 StatCursor *pCsr = (StatCursor *)pCursor; in statNext() local
573 Btree *pBt = pTab->db->aDb[pCsr->iDb].pBt; in statNext()
576 sqlite3_free(pCsr->zPath); in statNext()
577 pCsr->zPath = 0; in statNext()
580 if( pCsr->iPage<0 ){ in statNext()
582 statResetCounts(pCsr); in statNext()
583 rc = sqlite3_step(pCsr->pStmt); in statNext()
586 u32 iRoot = (u32)sqlite3_column_int64(pCsr->pStmt, 1); in statNext()
589 pCsr->isEof = 1; in statNext()
590 return sqlite3_reset(pCsr->pStmt); in statNext()
592 rc = statGetPage(pBt, iRoot, &pCsr->aPage[0]); in statNext()
593 pCsr->aPage[0].iPgno = iRoot; in statNext()
594 pCsr->aPage[0].iCell = 0; in statNext()
595 if( !pCsr->isAgg ){ in statNext()
596 pCsr->aPage[0].zPath = z = sqlite3_mprintf("/"); in statNext()
599 pCsr->iPage = 0; in statNext()
600 pCsr->nPage = 1; in statNext()
602 pCsr->isEof = 1; in statNext()
603 return sqlite3_reset(pCsr->pStmt); in statNext()
607 StatPage *p = &pCsr->aPage[pCsr->iPage]; in statNext()
608 if( !pCsr->isAgg ) statResetCounts(pCsr); in statNext()
617 pCsr->nPage++; in statNext()
618 statSizeAndOffset(pCsr); in statNext()
620 pCsr->nPayload += nUsable - 4; in statNext()
622 pCsr->nPayload += pCell->nLastOvfl; in statNext()
623 pCsr->nUnused += nUsable - 4 - pCell->nLastOvfl; in statNext()
627 if( !pCsr->isAgg ){ in statNext()
628 pCsr->zName = (char *)sqlite3_column_text(pCsr->pStmt, 0); in statNext()
629 pCsr->iPageno = pCell->aOvfl[iOvfl]; in statNext()
630 pCsr->zPagetype = "overflow"; in statNext()
631 pCsr->zPath = z = sqlite3_mprintf( in statNext()
643 pCsr->iPage--; in statNext()
644 if( pCsr->isAgg && pCsr->iPage<0 ){ in statNext()
651 pCsr->iPage++; in statNext()
652 if( pCsr->iPage>=ArraySize(pCsr->aPage) ){ in statNext()
653 statResetCsr(pCsr); in statNext()
656 assert( p==&pCsr->aPage[pCsr->iPage-1] ); in statNext()
664 pCsr->nPage++; in statNext()
666 if( !pCsr->isAgg ){ in statNext()
679 StatPage *p = &pCsr->aPage[pCsr->iPage]; in statNext()
680 pCsr->zName = (char *)sqlite3_column_text(pCsr->pStmt, 0); in statNext()
681 pCsr->iPageno = p->iPgno; in statNext()
685 statSizeAndOffset(pCsr); in statNext()
690 pCsr->zPagetype = "internal"; in statNext()
694 pCsr->zPagetype = "leaf"; in statNext()
697 pCsr->zPagetype = "corrupted"; in statNext()
700 pCsr->nCell += p->nCell; in statNext()
701 pCsr->nUnused += p->nUnused; in statNext()
702 if( p->nMxPayload>pCsr->nMxPayload ) pCsr->nMxPayload = p->nMxPayload; in statNext()
703 if( !pCsr->isAgg ){ in statNext()
704 pCsr->zPath = z = sqlite3_mprintf("%s", p->zPath); in statNext()
711 pCsr->nPayload += nPayload; in statNext()
716 if( pCsr->isAgg ) goto statNextRestart; in statNext()
724 StatCursor *pCsr = (StatCursor *)pCursor; in statEof() local
725 return pCsr->isEof; in statEof()
737 StatCursor *pCsr = (StatCursor *)pCursor; in statFilter() local
745 statResetCsr(pCsr); in statFilter()
746 sqlite3_finalize(pCsr->pStmt); in statFilter()
747 pCsr->pStmt = 0; in statFilter()
751 pCsr->iDb = sqlite3FindDbName(pTab->db, zDbase); in statFilter()
752 if( pCsr->iDb<0 ){ in statFilter()
753 pCsr->iDb = 0; in statFilter()
754 pCsr->isEof = 1; in statFilter()
758 pCsr->iDb = pTab->iDb; in statFilter()
766 pCsr->isAgg = sqlite3_value_double(argv[iArg++])!=0.0; in statFilter()
768 pCsr->isAgg = 0; in statFilter()
777 pTab->db->aDb[pCsr->iDb].zDbSName); in statFilter()
788 rc = sqlite3_prepare_v2(pTab->db, zSql, -1, &pCsr->pStmt, 0); in statFilter()
793 pCsr->iPage = -1; in statFilter()
804 StatCursor *pCsr = (StatCursor *)pCursor; in statColumn() local
807 sqlite3_result_text(ctx, pCsr->zName, -1, SQLITE_TRANSIENT); in statColumn()
810 if( !pCsr->isAgg ){ in statColumn()
811 sqlite3_result_text(ctx, pCsr->zPath, -1, SQLITE_TRANSIENT); in statColumn()
815 if( pCsr->isAgg ){ in statColumn()
816 sqlite3_result_int64(ctx, pCsr->nPage); in statColumn()
818 sqlite3_result_int64(ctx, pCsr->iPageno); in statColumn()
822 if( !pCsr->isAgg ){ in statColumn()
823 sqlite3_result_text(ctx, pCsr->zPagetype, -1, SQLITE_STATIC); in statColumn()
827 sqlite3_result_int(ctx, pCsr->nCell); in statColumn()
830 sqlite3_result_int(ctx, pCsr->nPayload); in statColumn()
833 sqlite3_result_int(ctx, pCsr->nUnused); in statColumn()
836 sqlite3_result_int(ctx, pCsr->nMxPayload); in statColumn()
839 if( !pCsr->isAgg ){ in statColumn()
840 sqlite3_result_int64(ctx, pCsr->iOffset); in statColumn()
844 sqlite3_result_int(ctx, pCsr->szPage); in statColumn()
848 int iDb = pCsr->iDb; in statColumn()
853 sqlite3_result_int(ctx, pCsr->isAgg); in statColumn()
861 StatCursor *pCsr = (StatCursor *)pCursor; in statRowid() local
862 *pRowid = pCsr->iPageno; in statRowid()