Lines Matching refs:pCsr

7283   ZipfileCsr *pCsr;
7284 pCsr = sqlite3_malloc(sizeof(*pCsr));
7285 *ppCsr = (sqlite3_vtab_cursor*)pCsr;
7286 if( pCsr==0 ){
7289 memset(pCsr, 0, sizeof(*pCsr));
7290 pCsr->iId = ++pTab->iNextCsrid;
7291 pCsr->pCsrNext = pTab->pCsrList;
7292 pTab->pCsrList = pCsr;
7300 static void zipfileResetCursor(ZipfileCsr *pCsr){
7304 pCsr->bEof = 0;
7305 if( pCsr->pFile ){
7306 fclose(pCsr->pFile);
7307 pCsr->pFile = 0;
7308 zipfileEntryFree(pCsr->pCurrent);
7309 pCsr->pCurrent = 0;
7312 for(p=pCsr->pFreeEntry; p; p=pNext){
7322 ZipfileCsr *pCsr = (ZipfileCsr*)cur;
7323 ZipfileTab *pTab = (ZipfileTab*)(pCsr->base.pVtab);
7325 zipfileResetCursor(pCsr);
7328 for(pp=&pTab->pCsrList; *pp!=pCsr; pp=&((*pp)->pCsrNext));
7329 *pp = pCsr->pCsrNext;
7331 sqlite3_free(pCsr);
7337 ** pCsr to the results of vprintf(zFmt, ...).
7346 static void zipfileCursorErr(ZipfileCsr *pCsr, const char *zFmt, ...){
7349 sqlite3_free(pCsr->base.pVtab->zErrMsg);
7350 pCsr->base.pVtab->zErrMsg = sqlite3_vmprintf(zFmt, ap);
7742 ZipfileCsr *pCsr = (ZipfileCsr*)cur;
7745 if( pCsr->pFile ){
7746 i64 iEof = pCsr->eocd.iOffset + pCsr->eocd.nSize;
7747 zipfileEntryFree(pCsr->pCurrent);
7748 pCsr->pCurrent = 0;
7749 if( pCsr->iNextOff>=iEof ){
7750 pCsr->bEof = 1;
7754 rc = zipfileGetEntry(pTab, 0, 0, pCsr->pFile, pCsr->iNextOff, &p);
7756 pCsr->iNextOff += ZIPFILE_CDS_FIXED_SZ;
7757 pCsr->iNextOff += (int)p->cds.nExtra + p->cds.nFile + p->cds.nComment;
7759 pCsr->pCurrent = p;
7762 if( !pCsr->bNoop ){
7763 pCsr->pCurrent = pCsr->pCurrent->pNext;
7765 if( pCsr->pCurrent==0 ){
7766 pCsr->bEof = 1;
7770 pCsr->bNoop = 0;
7881 ZipfileCsr *pCsr = (ZipfileCsr*)cur;
7882 ZipfileCDS *pCDS = &pCsr->pCurrent->cds;
7894 sqlite3_result_int64(ctx, pCsr->pCurrent->mUnixTime);
7912 if( pCsr->pCurrent->aData ){
7913 aBuf = pCsr->pCurrent->aData;
7919 FILE *pFile = pCsr->pFile;
7921 pFile = ((ZipfileTab*)(pCsr->base.pVtab))->pWriteFd;
7923 rc = zipfileReadData(pFile, aBuf, sz, pCsr->pCurrent->iDataOff,
7924 &pCsr->base.pVtab->zErrMsg
7953 sqlite3_result_int64(ctx, pCsr->iId);
7964 ZipfileCsr *pCsr = (ZipfileCsr*)cur;
7965 return pCsr->bEof;
8095 ZipfileCsr *pCsr = (ZipfileCsr*)cur;
8100 zipfileResetCursor(pCsr);
8105 zipfileCursorErr(pCsr, "zipfile() function requires an argument");
8117 pCsr->pFreeEntry = pTab->pFirstEntry;
8126 pCsr->pFile = fopen(zFile, "rb");
8127 if( pCsr->pFile==0 ){
8128 zipfileCursorErr(pCsr, "cannot open file: %s", zFile);
8131 rc = zipfileReadEOCD(pTab, 0, 0, pCsr->pFile, &pCsr->eocd);
8133 if( pCsr->eocd.nEntry==0 ){
8134 pCsr->bEof = 1;
8136 pCsr->iNextOff = pCsr->eocd.iOffset;
8142 pCsr->bNoop = 1;
8143 pCsr->pCurrent = pCsr->pFreeEntry ? pCsr->pFreeEntry : pTab->pFirstEntry;
8557 ZipfileCsr *pCsr;
8558 for(pCsr=pTab->pCsrList; pCsr; pCsr=pCsr->pCsrNext){
8559 if( pCsr->pCurrent && (pCsr->pCurrent==pOld || pCsr->pCurrent==pOld2) ){
8560 pCsr->pCurrent = pCsr->pCurrent->pNext;
8561 pCsr->bNoop = 1;
8679 ZipfileCsr *pCsr;
8680 for(pCsr=pTab->pCsrList; pCsr; pCsr=pCsr->pCsrNext){
8681 if( iId==pCsr->iId ) break;
8683 return pCsr;
8691 ZipfileCsr *pCsr;
8695 pCsr = zipfileFindCursor(pTab, sqlite3_value_int64(argv[0]));
8696 if( pCsr ){
8697 ZipfileCDS *p = &pCsr->pCurrent->cds;
9896 ExpertCsr *pCsr;
9898 pCsr = idxMalloc(&rc, sizeof(ExpertCsr));
9899 *ppCursor = (sqlite3_vtab_cursor*)pCsr;
9907 ExpertCsr *pCsr = (ExpertCsr*)cur;
9908 sqlite3_finalize(pCsr->pData);
9909 sqlite3_free(pCsr);
9920 ExpertCsr *pCsr = (ExpertCsr*)cur;
9921 return pCsr->pData==0;
9928 ExpertCsr *pCsr = (ExpertCsr*)cur;
9931 assert( pCsr->pData );
9932 rc = sqlite3_step(pCsr->pData);
9934 rc = sqlite3_finalize(pCsr->pData);
9935 pCsr->pData = 0;
9956 ExpertCsr *pCsr = (ExpertCsr*)cur;
9958 pVal = sqlite3_column_value(pCsr->pData, i);
9973 ExpertCsr *pCsr = (ExpertCsr*)cur;
9982 rc = sqlite3_finalize(pCsr->pData);
9983 pCsr->pData = 0;
9985 rc = idxPrintfPrepareStmt(pExpert->db, &pCsr->pData, &pVtab->base.zErrMsg,
10061 char *pCsr = 0;
10095 pCsr = (char*)&pNew->aCol[nCol];
10105 pNew->aCol[nCol].zName = pCsr;
10107 memcpy(pCsr, zCol, nCopy);
10108 pCsr += nCopy;
10116 pNew->aCol[nCol].zColl = pCsr;
10117 memcpy(pCsr, zColSeq, nCopy);
10118 pCsr += nCopy;
10129 pNew->zName = pCsr;
11673 DbdataCursor *pCsr;
11675 pCsr = (DbdataCursor*)sqlite3_malloc64(sizeof(DbdataCursor));
11676 if( pCsr==0 ){
11679 memset(pCsr, 0, sizeof(DbdataCursor));
11680 pCsr->base.pVtab = pVTab;
11683 *ppCursor = (sqlite3_vtab_cursor *)pCsr;
11691 static void dbdataResetCursor(DbdataCursor *pCsr){
11692 DbdataTable *pTab = (DbdataTable*)(pCsr->base.pVtab);
11694 pTab->pStmt = pCsr->pStmt;
11696 sqlite3_finalize(pCsr->pStmt);
11698 pCsr->pStmt = 0;
11699 pCsr->iPgno = 1;
11700 pCsr->iCell = 0;
11701 pCsr->iField = 0;
11702 pCsr->bOnePage = 0;
11703 sqlite3_free(pCsr->aPage);
11704 sqlite3_free(pCsr->pRec);
11705 pCsr->pRec = 0;
11706 pCsr->aPage = 0;
11713 DbdataCursor *pCsr = (DbdataCursor*)pCursor;
11714 dbdataResetCursor(pCsr);
11715 sqlite3_free(pCsr);
11743 DbdataCursor *pCsr, /* Cursor object */
11750 sqlite3_stmt *pStmt = pCsr->pStmt;
11913 DbdataCursor *pCsr = (DbdataCursor*)pCursor;
11916 pCsr->iRowid++;
11919 int iOff = (pCsr->iPgno==1 ? 100 : 0);
11922 if( pCsr->aPage==0 ){
11924 if( pCsr->bOnePage==0 && pCsr->iPgno>pCsr->szDb ) return SQLITE_OK;
11925 rc = dbdataLoadPage(pCsr, pCsr->iPgno, &pCsr->aPage, &pCsr->nPage);
11927 if( pCsr->aPage ) break;
11928 if( pCsr->bOnePage ) return SQLITE_OK;
11929 pCsr->iPgno++;
11931 pCsr->iCell = pTab->bPtr ? -2 : 0;
11932 pCsr->nCell = get_uint16(&pCsr->aPage[iOff+3]);
11936 if( pCsr->aPage[iOff]!=0x02 && pCsr->aPage[iOff]!=0x05 ){
11937 pCsr->iCell = pCsr->nCell;
11939 pCsr->iCell++;
11940 if( pCsr->iCell>=pCsr->nCell ){
11941 sqlite3_free(pCsr->aPage);
11942 pCsr->aPage = 0;
11943 if( pCsr->bOnePage ) return SQLITE_OK;
11944 pCsr->iPgno++;
11950 if( pCsr->pRec==0 ){
11959 switch( pCsr->aPage[iOff] ){
11970 pCsr->iCell = pCsr->nCell;
11974 if( pCsr->iCell>=pCsr->nCell ){
11978 iOff += 8 + nPointer + pCsr->iCell*2;
11979 if( iOff>pCsr->nPage ){
11982 iOff = get_uint16(&pCsr->aPage[iOff]);
11989 if( bNextPage || iOff>pCsr->nPage ){
11992 iOff += dbdataGetVarintU32(&pCsr->aPage[iOff], &nPayload);
11996 if( bHasRowid && !bNextPage && iOff<pCsr->nPage ){
11997 iOff += dbdataGetVarint(&pCsr->aPage[iOff], &pCsr->iIntkey);
12001 U = pCsr->nPage;
12020 if( bNextPage || nLocal+iOff>pCsr->nPage ){
12027 pCsr->pRec = (u8*)sqlite3_malloc64(nPayload+DBDATA_PADDING_BYTES);
12028 if( pCsr->pRec==0 ) return SQLITE_NOMEM;
12029 memset(pCsr->pRec, 0, nPayload+DBDATA_PADDING_BYTES);
12030 pCsr->nRec = nPayload;
12033 memcpy(pCsr->pRec, &pCsr->aPage[iOff], nLocal);
12039 u32 pgnoOvfl = get_uint32(&pCsr->aPage[iOff]);
12044 rc = dbdataLoadPage(pCsr, pgnoOvfl, &aOvfl, &nOvfl);
12045 assert( rc!=SQLITE_OK || aOvfl==0 || nOvfl==pCsr->nPage );
12051 memcpy(&pCsr->pRec[nPayload-nRem], &aOvfl[4], nCopy);
12059 iHdr = dbdataGetVarintU32(pCsr->pRec, &nHdr);
12061 pCsr->nHdr = nHdr;
12062 pCsr->pHdrPtr = &pCsr->pRec[iHdr];
12063 pCsr->pPtr = &pCsr->pRec[pCsr->nHdr];
12064 pCsr->iField = (bHasRowid ? -1 : 0);
12068 pCsr->iField++;
12069 if( pCsr->iField>0 ){
12071 if( pCsr->pHdrPtr>&pCsr->pRec[pCsr->nRec] ){
12074 pCsr->pHdrPtr += dbdataGetVarintU32(pCsr->pHdrPtr, &iType);
12075 pCsr->pPtr += dbdataValueBytes(iType);
12081 sqlite3_free(pCsr->aPage);
12082 sqlite3_free(pCsr->pRec);
12083 pCsr->aPage = 0;
12084 pCsr->pRec = 0;
12085 if( pCsr->bOnePage ) return SQLITE_OK;
12086 pCsr->iPgno++;
12088 if( pCsr->iField<0 || pCsr->pHdrPtr<&pCsr->pRec[pCsr->nHdr] ){
12094 sqlite3_free(pCsr->pRec);
12095 pCsr->pRec = 0;
12096 pCsr->iCell++;
12109 DbdataCursor *pCsr = (DbdataCursor*)pCursor;
12110 return pCsr->aPage==0;
12128 ** pCsr->szDb accordingly. If successful, return SQLITE_OK. Otherwise,
12131 static int dbdataDbsize(DbdataCursor *pCsr, const char *zSchema){
12132 DbdataTable *pTab = (DbdataTable*)pCsr->base.pVtab;
12148 pCsr->szDb = sqlite3_column_int(pStmt, 0);
12157 ** and inspecting the header field. If successful, set the pCsr->enc variable
12160 static int dbdataGetEncoding(DbdataCursor *pCsr){
12164 rc = dbdataLoadPage(pCsr, 1, &aPg1, &nPg1);
12167 pCsr->enc = get_uint32(&aPg1[56]);
12182 DbdataCursor *pCsr = (DbdataCursor*)pCursor;
12187 dbdataResetCursor(pCsr);
12188 assert( pCsr->iPgno==1 );
12194 pCsr->iPgno = sqlite3_value_int(argv[(idxNum & 0x01)]);
12195 pCsr->bOnePage = 1;
12197 rc = dbdataDbsize(pCsr, zSchema);
12203 pCsr->pStmt = pTab->pStmt;
12210 rc = sqlite3_prepare_v2(pTab->db, zSql, -1, &pCsr->pStmt, 0);
12216 &pCsr->pStmt, 0
12221 rc = sqlite3_bind_text(pCsr->pStmt, 1, zSchema, -1, SQLITE_TRANSIENT);
12229 rc = dbdataGetEncoding(pCsr);
12246 DbdataCursor *pCsr = (DbdataCursor*)pCursor;
12251 sqlite3_result_int64(ctx, pCsr->iPgno);
12254 int iOff = pCsr->iPgno==1 ? 100 : 0;
12255 if( pCsr->iCell<0 ){
12258 iOff += 12 + pCsr->iCell*2;
12259 if( iOff>pCsr->nPage ) return SQLITE_OK;
12260 iOff = get_uint16(&pCsr->aPage[iOff]);
12262 if( iOff<=pCsr->nPage ){
12263 sqlite3_result_int64(ctx, get_uint32(&pCsr->aPage[iOff]));
12271 sqlite3_result_int64(ctx, pCsr->iPgno);
12274 sqlite3_result_int(ctx, pCsr->iCell);
12277 sqlite3_result_int(ctx, pCsr->iField);
12280 if( pCsr->iField<0 ){
12281 sqlite3_result_int64(ctx, pCsr->iIntkey);
12282 }else if( &pCsr->pRec[pCsr->nRec] >= pCsr->pPtr ){
12284 dbdataGetVarintU32(pCsr->pHdrPtr, &iType);
12286 ctx, pCsr->enc, iType, pCsr->pPtr,
12287 &pCsr->pRec[pCsr->nRec] - pCsr->pPtr
12301 DbdataCursor *pCsr = (DbdataCursor*)pCursor;
12302 *pRowid = pCsr->iRowid;