Lines Matching refs:pCsr

253   DbdataCursor *pCsr;  in dbdataOpen()  local
255 pCsr = (DbdataCursor*)sqlite3_malloc64(sizeof(DbdataCursor)); in dbdataOpen()
256 if( pCsr==0 ){ in dbdataOpen()
259 memset(pCsr, 0, sizeof(DbdataCursor)); in dbdataOpen()
260 pCsr->base.pVtab = pVTab; in dbdataOpen()
263 *ppCursor = (sqlite3_vtab_cursor *)pCsr; in dbdataOpen()
271 static void dbdataResetCursor(DbdataCursor *pCsr){ in dbdataResetCursor() argument
272 DbdataTable *pTab = (DbdataTable*)(pCsr->base.pVtab); in dbdataResetCursor()
274 pTab->pStmt = pCsr->pStmt; in dbdataResetCursor()
276 sqlite3_finalize(pCsr->pStmt); in dbdataResetCursor()
278 pCsr->pStmt = 0; in dbdataResetCursor()
279 pCsr->iPgno = 1; in dbdataResetCursor()
280 pCsr->iCell = 0; in dbdataResetCursor()
281 pCsr->iField = 0; in dbdataResetCursor()
282 pCsr->bOnePage = 0; in dbdataResetCursor()
283 sqlite3_free(pCsr->aPage); in dbdataResetCursor()
284 sqlite3_free(pCsr->pRec); in dbdataResetCursor()
285 pCsr->pRec = 0; in dbdataResetCursor()
286 pCsr->aPage = 0; in dbdataResetCursor()
293 DbdataCursor *pCsr = (DbdataCursor*)pCursor; in dbdataClose() local
294 dbdataResetCursor(pCsr); in dbdataClose()
295 sqlite3_free(pCsr); in dbdataClose()
323 DbdataCursor *pCsr, /* Cursor object */ in dbdataLoadPage() argument
330 sqlite3_stmt *pStmt = pCsr->pStmt; in dbdataLoadPage()
465 DbdataCursor *pCsr = (DbdataCursor*)pCursor; in dbdataNext() local
468 pCsr->iRowid++; in dbdataNext()
471 int iOff = (pCsr->iPgno==1 ? 100 : 0); in dbdataNext()
474 if( pCsr->aPage==0 ){ in dbdataNext()
476 if( pCsr->bOnePage==0 && pCsr->iPgno>pCsr->szDb ) return SQLITE_OK; in dbdataNext()
477 rc = dbdataLoadPage(pCsr, pCsr->iPgno, &pCsr->aPage, &pCsr->nPage); in dbdataNext()
479 if( pCsr->aPage ) break; in dbdataNext()
480 pCsr->iPgno++; in dbdataNext()
482 pCsr->iCell = pTab->bPtr ? -2 : 0; in dbdataNext()
483 pCsr->nCell = get_uint16(&pCsr->aPage[iOff+3]); in dbdataNext()
487 if( pCsr->aPage[iOff]!=0x02 && pCsr->aPage[iOff]!=0x05 ){ in dbdataNext()
488 pCsr->iCell = pCsr->nCell; in dbdataNext()
490 pCsr->iCell++; in dbdataNext()
491 if( pCsr->iCell>=pCsr->nCell ){ in dbdataNext()
492 sqlite3_free(pCsr->aPage); in dbdataNext()
493 pCsr->aPage = 0; in dbdataNext()
494 if( pCsr->bOnePage ) return SQLITE_OK; in dbdataNext()
495 pCsr->iPgno++; in dbdataNext()
501 if( pCsr->pRec==0 ){ in dbdataNext()
510 switch( pCsr->aPage[iOff] ){ in dbdataNext()
521 pCsr->iCell = pCsr->nCell; in dbdataNext()
525 if( pCsr->iCell>=pCsr->nCell ){ in dbdataNext()
529 iOff += 8 + nPointer + pCsr->iCell*2; in dbdataNext()
530 if( iOff>pCsr->nPage ){ in dbdataNext()
533 iOff = get_uint16(&pCsr->aPage[iOff]); in dbdataNext()
540 if( bNextPage || iOff>pCsr->nPage ){ in dbdataNext()
543 iOff += dbdataGetVarint(&pCsr->aPage[iOff], &nPayload); in dbdataNext()
547 if( bHasRowid && !bNextPage && iOff<pCsr->nPage ){ in dbdataNext()
548 iOff += dbdataGetVarint(&pCsr->aPage[iOff], &pCsr->iIntkey); in dbdataNext()
552 U = pCsr->nPage; in dbdataNext()
571 if( bNextPage || nLocal+iOff>pCsr->nPage ){ in dbdataNext()
578 pCsr->pRec = (u8*)sqlite3_malloc64(nPayload+DBDATA_PADDING_BYTES); in dbdataNext()
579 if( pCsr->pRec==0 ) return SQLITE_NOMEM; in dbdataNext()
580 memset(pCsr->pRec, 0, nPayload+DBDATA_PADDING_BYTES); in dbdataNext()
581 pCsr->nRec = nPayload; in dbdataNext()
584 memcpy(pCsr->pRec, &pCsr->aPage[iOff], nLocal); in dbdataNext()
590 unsigned int pgnoOvfl = get_uint32(&pCsr->aPage[iOff]); in dbdataNext()
595 rc = dbdataLoadPage(pCsr, pgnoOvfl, &aOvfl, &nOvfl); in dbdataNext()
596 assert( rc!=SQLITE_OK || aOvfl==0 || nOvfl==pCsr->nPage ); in dbdataNext()
602 memcpy(&pCsr->pRec[nPayload-nRem], &aOvfl[4], nCopy); in dbdataNext()
610 iHdr = dbdataGetVarint(pCsr->pRec, &nHdr); in dbdataNext()
611 pCsr->nHdr = nHdr; in dbdataNext()
612 pCsr->pHdrPtr = &pCsr->pRec[iHdr]; in dbdataNext()
613 pCsr->pPtr = &pCsr->pRec[pCsr->nHdr]; in dbdataNext()
614 pCsr->iField = (bHasRowid ? -1 : 0); in dbdataNext()
618 pCsr->iField++; in dbdataNext()
619 if( pCsr->iField>0 ){ in dbdataNext()
621 if( pCsr->pHdrPtr>&pCsr->pRec[pCsr->nRec] ){ in dbdataNext()
624 pCsr->pHdrPtr += dbdataGetVarint(pCsr->pHdrPtr, &iType); in dbdataNext()
625 pCsr->pPtr += dbdataValueBytes(iType); in dbdataNext()
631 sqlite3_free(pCsr->aPage); in dbdataNext()
632 sqlite3_free(pCsr->pRec); in dbdataNext()
633 pCsr->aPage = 0; in dbdataNext()
634 pCsr->pRec = 0; in dbdataNext()
635 if( pCsr->bOnePage ) return SQLITE_OK; in dbdataNext()
636 pCsr->iPgno++; in dbdataNext()
638 if( pCsr->iField<0 || pCsr->pHdrPtr<&pCsr->pRec[pCsr->nHdr] ){ in dbdataNext()
644 sqlite3_free(pCsr->pRec); in dbdataNext()
645 pCsr->pRec = 0; in dbdataNext()
646 pCsr->iCell++; in dbdataNext()
659 DbdataCursor *pCsr = (DbdataCursor*)pCursor; in dbdataEof() local
660 return pCsr->aPage==0; in dbdataEof()
669 static int dbdataDbsize(DbdataCursor *pCsr, const char *zSchema){ in dbdataDbsize() argument
670 DbdataTable *pTab = (DbdataTable*)pCsr->base.pVtab; in dbdataDbsize()
680 pCsr->szDb = sqlite3_column_int(pStmt, 0); in dbdataDbsize()
695 DbdataCursor *pCsr = (DbdataCursor*)pCursor; in dbdataFilter() local
700 dbdataResetCursor(pCsr); in dbdataFilter()
701 assert( pCsr->iPgno==1 ); in dbdataFilter()
706 pCsr->iPgno = sqlite3_value_int(argv[(idxNum & 0x01)]); in dbdataFilter()
707 pCsr->bOnePage = 1; in dbdataFilter()
709 pCsr->nPage = dbdataDbsize(pCsr, zSchema); in dbdataFilter()
710 rc = dbdataDbsize(pCsr, zSchema); in dbdataFilter()
715 pCsr->pStmt = pTab->pStmt; in dbdataFilter()
720 &pCsr->pStmt, 0 in dbdataFilter()
725 rc = sqlite3_bind_text(pCsr->pStmt, 1, zSchema, -1, SQLITE_TRANSIENT); in dbdataFilter()
743 DbdataCursor *pCsr = (DbdataCursor*)pCursor; in dbdataColumn() local
748 sqlite3_result_int64(ctx, pCsr->iPgno); in dbdataColumn()
751 int iOff = pCsr->iPgno==1 ? 100 : 0; in dbdataColumn()
752 if( pCsr->iCell<0 ){ in dbdataColumn()
755 iOff += 12 + pCsr->iCell*2; in dbdataColumn()
756 if( iOff>pCsr->nPage ) return SQLITE_OK; in dbdataColumn()
757 iOff = get_uint16(&pCsr->aPage[iOff]); in dbdataColumn()
759 if( iOff<=pCsr->nPage ){ in dbdataColumn()
760 sqlite3_result_int64(ctx, get_uint32(&pCsr->aPage[iOff])); in dbdataColumn()
768 sqlite3_result_int64(ctx, pCsr->iPgno); in dbdataColumn()
771 sqlite3_result_int(ctx, pCsr->iCell); in dbdataColumn()
774 sqlite3_result_int(ctx, pCsr->iField); in dbdataColumn()
777 if( pCsr->iField<0 ){ in dbdataColumn()
778 sqlite3_result_int64(ctx, pCsr->iIntkey); in dbdataColumn()
781 dbdataGetVarint(pCsr->pHdrPtr, &iType); in dbdataColumn()
783 ctx, iType, pCsr->pPtr, &pCsr->pRec[pCsr->nRec] - pCsr->pPtr in dbdataColumn()
797 DbdataCursor *pCsr = (DbdataCursor*)pCursor; in dbdataRowid() local
798 *pRowid = pCsr->iRowid; in dbdataRowid()