Lines Matching defs:pCsr

57566 ** Argument pCsr must be a cursor opened for writing on an 
57575 SQLITE_PRIVATE int sqlite3BtreePutData(BtCursor *pCsr, u32 offset, u32 amt, void *z){
57577 assert( cursorHoldsMutex(pCsr) );
57578 assert( sqlite3_mutex_held(pCsr->pBtree->db->mutex) );
57579 assert( pCsr->isIncrblobHandle );
57581 rc = restoreCursorPosition(pCsr);
57585 assert( pCsr->eState!=CURSOR_REQUIRESEEK );
57586 if( pCsr->eState!=CURSOR_VALID ){
57597 if( !pCsr->wrFlag ){
57600 assert( (pCsr->pBt->btsFlags & BTS_READ_ONLY)==0
57601 && pCsr->pBt->inTransaction==TRANS_WRITE );
57602 assert( hasSharedCacheTableLock(pCsr->pBtree, pCsr->pgnoRoot, 0, 2) );
57603 assert( !hasReadConflicts(pCsr->pBtree, pCsr->pgnoRoot) );
57604 assert( pCsr->apPage[pCsr->iPage]->intKey );
57606 return accessPayload(pCsr, offset, amt, (unsigned char *)z, 1);
71231 BtCursor *pCsr; /* Cursor pointing at blob row */
71279 p->pCsr = v->apCsr[0]->pCursor;
71280 sqlite3BtreeEnterCursor(p->pCsr);
71281 sqlite3BtreeCacheOverflow(p->pCsr);
71282 sqlite3BtreeLeaveCursor(p->pCsr);
71589 sqlite3BtreeEnterCursor(p->pCsr);
71590 rc = xCall(p->pCsr, iOffset+p->iOffset, n, z);
71591 sqlite3BtreeLeaveCursor(p->pCsr);
71973 ** If pKey2 is passed a NULL pointer, then it is assumed that the pCsr->aSpace
71977 VdbeCursor *pCsr, /* Cursor object (for pKeyInfo) */
71983 KeyInfo *pKeyInfo = pCsr->pKeyInfo;
71984 VdbeSorter *pSorter = pCsr->pSorter;
72012 static int vdbeSorterDoCompare(VdbeCursor *pCsr, int iOut){
72013 VdbeSorter *pSorter = pCsr->pSorter;
72039 assert( pCsr->pSorter->pUnpacked!=0 ); /* allocated in vdbeSorterMerge() */
72041 pCsr, 0, p1->aKey, p1->nKey, p2->aKey, p2->nKey, &res
72057 SQLITE_PRIVATE int sqlite3VdbeSorterInit(sqlite3 *db, VdbeCursor *pCsr){
72063 assert( pCsr->pKeyInfo && pCsr->pBt==0 );
72064 pCsr->pSorter = pSorter = sqlite3DbMallocZero(db, sizeof(VdbeSorter));
72069 pSorter->pUnpacked = sqlite3VdbeAllocUnpackedRecord(pCsr->pKeyInfo, 0, 0, &d);
72099 SQLITE_PRIVATE void sqlite3VdbeSorterClose(sqlite3 *db, VdbeCursor *pCsr){
72100 VdbeSorter *pSorter = pCsr->pSorter;
72115 pCsr->pSorter = 0;
72138 VdbeCursor *pCsr, /* For pKeyInfo */
72149 vdbeSorterCompare(pCsr, 0, p1->pVal, p1->nVal, pVal2, p2->nVal, &res);
72168 ** Sort the linked list of records headed at pCsr->pRecord. Return SQLITE_OK
72172 static int vdbeSorterSort(VdbeCursor *pCsr){
72176 VdbeSorter *pSorter = pCsr->pSorter;
72188 vdbeSorterMerge(pCsr, p, aSlot[i], &p);
72197 vdbeSorterMerge(pCsr, p, aSlot[i], &p);
72219 static int vdbeSorterListToPMA(sqlite3 *db, VdbeCursor *pCsr){
72221 VdbeSorter *pSorter = pCsr->pSorter;
72228 rc = vdbeSorterSort(pCsr);
72282 VdbeCursor *pCsr, /* Sorter cursor */
72285 VdbeSorter *pSorter = pCsr->pSorter;
72316 rc = vdbeSorterListToPMA(db, pCsr);
72328 VdbeCursor *pCsr, /* Cursor handle for this sorter */
72331 VdbeSorter *pSorter = pCsr->pSorter;
72347 rc = vdbeSorterDoCompare(pCsr, i);
72358 SQLITE_PRIVATE int sqlite3VdbeSorterRewind(sqlite3 *db, VdbeCursor *pCsr, int *pbEof){
72359 VdbeSorter *pSorter = pCsr->pSorter;
72375 return vdbeSorterSort(pCsr);
72379 rc = vdbeSorterListToPMA(db, pCsr);
72411 rc = vdbeSorterInitMerge(db, pCsr, &nWrite);
72437 rc = sqlite3VdbeSorterNext(db, pCsr, &bEof);
72466 SQLITE_PRIVATE int sqlite3VdbeSorterNext(sqlite3 *db, VdbeCursor *pCsr, int *pbEof){
72467 VdbeSorter *pSorter = pCsr->pSorter;
72476 rc = vdbeSorterDoCompare(pCsr, i);
72515 SQLITE_PRIVATE int sqlite3VdbeSorterRowkey(VdbeCursor *pCsr, Mem *pOut){
72516 VdbeSorter *pSorter = pCsr->pSorter;
72541 VdbeCursor *pCsr, /* Sorter cursor */
72545 VdbeSorter *pSorter = pCsr->pSorter;
72549 vdbeSorterCompare(pCsr, 1, pVal->z, pVal->n, pKey, nKey, pRes);
116334 int (*xLanguageid)(sqlite3_tokenizer_cursor *pCsr, int iLangid);
116956 SQLITE_PRIVATE int sqlite3Fts3MsrIncrRestart(Fts3MultiSegReader *pCsr);
116982 static int fts3EvalNext(Fts3Cursor *pCsr);
116983 static int fts3EvalStart(Fts3Cursor *pCsr);
118146 sqlite3_vtab_cursor *pCsr; /* Allocated cursor */
118154 *ppCsr = pCsr = (sqlite3_vtab_cursor *)sqlite3_malloc(sizeof(Fts3Cursor));
118155 if( !pCsr ){
118158 memset(pCsr, 0, sizeof(Fts3Cursor));
118167 Fts3Cursor *pCsr = (Fts3Cursor *)pCursor;
118168 assert( ((Fts3Table *)pCsr->base.pVtab)->pSegments==0 );
118169 sqlite3_finalize(pCsr->pStmt);
118170 sqlite3Fts3ExprFree(pCsr->pExpr);
118171 sqlite3Fts3FreeDeferredTokens(pCsr);
118172 sqlite3_free(pCsr->aDoclist);
118173 sqlite3_free(pCsr->aMatchinfo);
118174 assert( ((Fts3Table *)pCsr->base.pVtab)->pSegments==0 );
118175 sqlite3_free(pCsr);
118180 ** If pCsr->pStmt has not been prepared (i.e. if pCsr->pStmt==0), then
118185 ** (or the equivalent for a content=xxx table) and set pCsr->pStmt to
118188 ** Otherwise, set *ppStmt to point to pCsr->pStmt and return SQLITE_OK.
118190 static int fts3CursorSeekStmt(Fts3Cursor *pCsr, sqlite3_stmt **ppStmt){
118192 if( pCsr->pStmt==0 ){
118193 Fts3Table *p = (Fts3Table *)pCsr->base.pVtab;
118197 rc = sqlite3_prepare_v2(p->db, zSql, -1, &pCsr->pStmt, 0);
118200 *ppStmt = pCsr->pStmt;
118205 ** Position the pCsr->pStmt statement so that it is on the row
118209 static int fts3CursorSeek(sqlite3_context *pContext, Fts3Cursor *pCsr){
118211 if( pCsr->isRequireSeek ){
118214 rc = fts3CursorSeekStmt(pCsr, &pStmt);
118216 sqlite3_bind_int64(pCsr->pStmt, 1, pCsr->iPrevId);
118217 pCsr->isRequireSeek = 0;
118218 if( SQLITE_ROW==sqlite3_step(pCsr->pStmt) ){
118221 rc = sqlite3_reset(pCsr->pStmt);
118222 if( rc==SQLITE_OK && ((Fts3Table *)pCsr->base.pVtab)->zContentTbl==0 ){
118227 pCsr->isEof = 1;
119242 ** Append SegReader object pNew to the end of the pCsr->apSegment[] array.
119245 Fts3MultiSegReader *pCsr,
119248 if( (pCsr->nSegment%16)==0 ){
119250 int nByte = (pCsr->nSegment + 16)*sizeof(Fts3SegReader*);
119251 apNew = (Fts3SegReader **)sqlite3_realloc(pCsr->apSegment, nByte);
119256 pCsr->apSegment = apNew;
119258 pCsr->apSegment[pCsr->nSegment++] = pNew;
119278 Fts3MultiSegReader *pCsr /* Cursor object to populate */
119294 rc = fts3SegReaderCursorAppend(pCsr, pSeg);
119322 rc = sqlite3Fts3SegReaderNew(pCsr->nSegment+1,
119328 rc = fts3SegReaderCursorAppend(pCsr, pSeg);
119352 Fts3MultiSegReader *pCsr /* Cursor object to populate */
119367 memset(pCsr, 0, sizeof(Fts3MultiSegReader));
119370 p, iLangid, iIndex, iLevel, zTerm, nTerm, isPrefix, isScan, pCsr
119385 Fts3MultiSegReader *pCsr /* Fts3MultiSegReader to modify */
119388 iLangid, 0, FTS3_SEGCURSOR_ALL, zTerm, nTerm, 0, 0,pCsr
119406 Fts3Cursor *pCsr, /* Virtual table cursor handle */
119419 Fts3Table *p = (Fts3Table *)pCsr->base.pVtab;
119425 rc = sqlite3Fts3SegReaderCursor(p, pCsr->iLangid,
119435 rc = sqlite3Fts3SegReaderCursor(p, pCsr->iLangid,
119440 p, pCsr->iLangid, zTerm, nTerm, pSegcsr
119448 rc = sqlite3Fts3SegReaderCursor(p, pCsr->iLangid,
119556 Fts3Cursor *pCsr = (Fts3Cursor *)pCursor;
119557 if( pCsr->eSearch==FTS3_DOCID_SEARCH || pCsr->eSearch==FTS3_FULLSCAN_SEARCH ){
119558 if( SQLITE_ROW!=sqlite3_step(pCsr->pStmt) ){
119559 pCsr->isEof = 1;
119560 rc = sqlite3_reset(pCsr->pStmt);
119562 pCsr->iPrevId = sqlite3_column_int64(pCsr->pStmt, 0);
119568 assert( ((Fts3Table *)pCsr->base.pVtab)->pSegments==0 );
119598 Fts3Cursor *pCsr = (Fts3Cursor *)pCursor;
119609 sqlite3_finalize(pCsr->pStmt);
119610 sqlite3_free(pCsr->aDoclist);
119611 sqlite3Fts3ExprFree(pCsr->pExpr);
119615 pCsr->bDesc = (idxStr[0]=='D');
119617 pCsr->bDesc = p->bDescIdx;
119619 pCsr->eSearch = (i16)idxNum;
119629 pCsr->iLangid = 0;
119630 if( nVal==2 ) pCsr->iLangid = sqlite3_value_int(apVal[1]);
119632 rc = sqlite3Fts3ExprParse(p->pTokenizer, pCsr->iLangid,
119633 p->azColumn, p->bHasStat, p->nColumn, iCol, zQuery, -1, &pCsr->pExpr
119646 rc = fts3EvalStart(pCsr);
119650 pCsr->pNextId = pCsr->aDoclist;
119651 pCsr->iPrevId = 0;
119662 p->zReadExprlist, (pCsr->bDesc ? "DESC" : "ASC")
119665 rc = sqlite3_prepare_v2(p->db, zSql, -1, &pCsr->pStmt, 0);
119671 rc = fts3CursorSeekStmt(pCsr, &pCsr->pStmt);
119673 rc = sqlite3_bind_value(pCsr->pStmt, 1, apVal[0]);
119696 Fts3Cursor *pCsr = (Fts3Cursor *) pCursor;
119697 *pRowid = pCsr->iPrevId;
119718 Fts3Cursor *pCsr = (Fts3Cursor *) pCursor;
119728 sqlite3_result_int64(pCtx, pCsr->iPrevId);
119732 sqlite3_result_blob(pCtx, &pCsr, sizeof(pCsr), SQLITE_TRANSIENT);
119733 }else if( iCol==p->nColumn+2 && pCsr->pExpr ){
119734 sqlite3_result_int64(pCtx, pCsr->iLangid);
119738 rc = fts3CursorSeek(0, pCsr);
119744 iLangid = sqlite3_column_int(pCsr->pStmt, p->nColumn+1);
119747 }else if( sqlite3_data_count(pCsr->pStmt)>(iCol+1) ){
119748 sqlite3_result_value(pCtx, sqlite3_column_value(pCsr->pStmt, iCol+1));
119753 assert( ((Fts3Table *)pCsr->base.pVtab)->pSegments==0 );
119881 Fts3Cursor *pCsr; /* Cursor handle passed through apVal[0] */
119898 if( fts3FunctionArg(pContext, "snippet", apVal[0], &pCsr) ) return;
119909 }else if( SQLITE_OK==fts3CursorSeek(pContext, pCsr) ){
119910 sqlite3Fts3Snippet(pContext, pCsr, zStart, zEnd, zEllipsis, iCol, nToken);
119922 Fts3Cursor *pCsr; /* Cursor handle passed through apVal[0] */
119927 if( fts3FunctionArg(pContext, "offsets", apVal[0], &pCsr) ) return;
119928 assert( pCsr );
119929 if( SQLITE_OK==fts3CursorSeek(pContext, pCsr) ){
119930 sqlite3Fts3Offsets(pContext, pCsr);
119982 Fts3Cursor *pCsr; /* Cursor handle passed through apVal[0] */
119984 if( SQLITE_OK==fts3FunctionArg(pContext, "matchinfo", apVal[0], &pCsr) ){
119989 sqlite3Fts3Matchinfo(pContext, pCsr, zArg);
120288 Fts3Cursor *pCsr, /* FTS cursor handle */
120301 int rc = fts3TermSegReaderCursor(pCsr,
120313 fts3EvalAllocateReaders(pCsr, pExpr->pLeft, pnToken, pnOr, pRc);
120314 fts3EvalAllocateReaders(pCsr, pExpr->pRight, pnToken, pnOr, pRc);
120388 Fts3Cursor *pCsr, /* FTS Cursor handle */
120391 Fts3Table *pTab = (Fts3Table *)pCsr->base.pVtab;
120423 static int fts3EvalDeferredPhrase(Fts3Cursor *pCsr, Fts3Phrase *pPhrase){
120477 pPhrase->doclist.iDocid = pCsr->iPrevId;
120529 static int fts3EvalPhraseStart(Fts3Cursor *pCsr, int bOptOk, Fts3Phrase *p){
120532 Fts3Table *pTab = (Fts3Table *)pCsr->base.pVtab;
120534 if( pCsr->bDesc==pTab->bDescIdx
120549 rc = fts3EvalPhraseLoad(pCsr, p);
120630 Fts3Cursor *pCsr, /* FTS Cursor handle */
120636 Fts3Table *pTab = (Fts3Table *)pCsr->base.pVtab;
120647 }else if( pCsr->bDesc!=pTab->bDescIdx && pDL->nAll ){
120710 Fts3Cursor *pCsr, /* FTS Cursor handle */
120723 *pRc = fts3EvalPhraseStart(pCsr, bOptOk, pExpr->pPhrase);
120725 fts3EvalStartReaders(pCsr, pExpr->pLeft, bOptOk, pRc);
120726 fts3EvalStartReaders(pCsr, pExpr->pRight, bOptOk, pRc);
120762 Fts3Cursor *pCsr, /* FTS Cursor handle */
120780 *pRc = sqlite3Fts3MsrOvfl(pCsr, pTC->pToken->pSegcsr, &pTC->nOvfl);
120793 fts3EvalTokenCosts(pCsr, pRoot, pExpr->pLeft, ppTC, ppOr, pRc);
120799 fts3EvalTokenCosts(pCsr, pRoot, pExpr->pRight, ppTC, ppOr, pRc);
120815 static int fts3EvalAverageDocsize(Fts3Cursor *pCsr, int *pnPage){
120816 if( pCsr->nRowAvg==0 ){
120829 Fts3Table *p = (Fts3Table*)pCsr->base.pVtab;
120851 pCsr->nDoc = nDoc;
120852 pCsr->nRowAvg = (int)(((nByte / nDoc) + p->nPgsz) / p->nPgsz);
120853 assert( pCsr->nRowAvg>0 );
120858 *pnPage = pCsr->nRowAvg;
120877 Fts3Cursor *pCsr, /* FTS Cursor handle */
120882 Fts3Table *pTab = (Fts3Table *)pCsr->base.pVtab;
120913 rc = fts3EvalAverageDocsize(pCsr, &nDocSize);
120959 rc = sqlite3Fts3DeferToken(pCsr, pToken, pTC->iCol);
120995 ** the full-text query currently stored in pCsr->pExpr. To iterate through
120998 ** fts3EvalStart(pCsr);
121000 ** fts3EvalNext(pCsr);
121001 ** if( pCsr->bEof ) break;
121002 ** ... return row pCsr->iPrevId to the caller ...
121005 static int fts3EvalStart(Fts3Cursor *pCsr){
121006 Fts3Table *pTab = (Fts3Table *)pCsr->base.pVtab;
121012 fts3EvalAllocateReaders(pCsr, pCsr->pExpr, &nToken, &nOr, &rc);
121031 fts3EvalTokenCosts(pCsr, 0, pCsr->pExpr, &pTC, &ppOr, &rc);
121036 rc = fts3EvalSelectDeferred(pCsr, 0, aTC, nToken);
121038 rc = fts3EvalSelectDeferred(pCsr, apOr[ii], aTC, nToken);
121046 fts3EvalStartReaders(pCsr, pCsr->pExpr, 1, &rc);
121159 Fts3Cursor *pCsr, /* FTS Cursor handle */
121164 int bDescDoclist = pCsr->bDesc; /* Used by DOCID_CMP() macro */
121178 fts3EvalNextRow(pCsr, pRight, pRc);
121184 fts3EvalNextRow(pCsr, pLeft, pRc);
121189 fts3EvalNextRow(pCsr, pLeft, pRc);
121190 fts3EvalNextRow(pCsr, pRight, pRc);
121195 fts3EvalNextRow(pCsr, pLeft, pRc);
121197 fts3EvalNextRow(pCsr, pRight, pRc);
121215 fts3EvalNextRow(pCsr, pLeft, pRc);
121217 fts3EvalNextRow(pCsr, pRight, pRc);
121219 fts3EvalNextRow(pCsr, pLeft, pRc);
121220 fts3EvalNextRow(pCsr, pRight, pRc);
121239 fts3EvalNextRow(pCsr, pRight, pRc);
121243 fts3EvalNextRow(pCsr, pLeft, pRc);
121249 fts3EvalNextRow(pCsr, pRight, pRc);
121260 *pRc = fts3EvalPhraseNext(pCsr, pPhrase, &pExpr->bEof);
121357 ** expression passed as the second argument matches the row that pCsr
121366 Fts3Cursor *pCsr, /* FTS cursor handle */
121376 fts3EvalTestExpr(pCsr, pExpr->pLeft, pRc)
121377 && fts3EvalTestExpr(pCsr, pExpr->pRight, pRc)
121402 if( p->pRight->iDocid==pCsr->iPrevId ){
121406 if( p->iDocid==pCsr->iPrevId ){
121414 int bHit1 = fts3EvalTestExpr(pCsr, pExpr->pLeft, pRc);
121415 int bHit2 = fts3EvalTestExpr(pCsr, pExpr->pRight, pRc);
121422 fts3EvalTestExpr(pCsr, pExpr->pLeft, pRc)
121423 && !fts3EvalTestExpr(pCsr, pExpr->pRight, pRc)
121428 if( pCsr->pDeferred
121429 && (pExpr->iDocid==pCsr->iPrevId || pExpr->bDeferred)
121436 *pRc = fts3EvalDeferredPhrase(pCsr, pPhrase);
121438 pExpr->iDocid = pCsr->iPrevId;
121440 bHit = (pExpr->bEof==0 && pExpr->iDocid==pCsr->iPrevId);
121473 static int fts3EvalTestDeferredAndNear(Fts3Cursor *pCsr, int *pRc){
121484 if( pCsr->pDeferred ){
121485 rc = fts3CursorSeek(0, pCsr);
121487 rc = sqlite3Fts3CacheDeferredDoclists(pCsr);
121490 bMiss = (0==fts3EvalTestExpr(pCsr, pCsr->pExpr, &rc));
121493 sqlite3Fts3FreeDeferredDoclists(pCsr);
121503 static int fts3EvalNext(Fts3Cursor *pCsr){
121505 Fts3Expr *pExpr = pCsr->pExpr;
121506 assert( pCsr->isEof==0 );
121508 pCsr->isEof = 1;
121511 if( pCsr->isRequireSeek==0 ){
121512 sqlite3_reset(pCsr->pStmt);
121514 assert( sqlite3_data_count(pCsr->pStmt)==0 );
121515 fts3EvalNextRow(pCsr, pExpr, &rc);
121516 pCsr->isEof = pExpr->bEof;
121517 pCsr->isRequireSeek = 1;
121518 pCsr->isMatchinfoNeeded = 1;
121519 pCsr->iPrevId = pExpr->iDocid;
121520 }while( pCsr->isEof==0 && fts3EvalTestDeferredAndNear(pCsr, &rc) );
121535 Fts3Cursor *pCsr,
121548 *pRc = fts3EvalPhraseStart(pCsr, 0, pPhrase);
121559 fts3EvalRestart(pCsr, pExpr->pLeft, pRc);
121560 fts3EvalRestart(pCsr, pExpr->pRight, pRc);
121616 Fts3Cursor *pCsr, /* Cursor object */
121623 Fts3Table *pTab = (Fts3Table *)pCsr->base.pVtab;
121627 sqlite3_int64 iPrevId = pCsr->iPrevId;
121649 fts3EvalRestart(pCsr, pRoot, &rc);
121651 while( pCsr->isEof==0 && rc==SQLITE_OK ){
121655 if( pCsr->isRequireSeek==0 ) sqlite3_reset(pCsr->pStmt);
121656 assert( sqlite3_data_count(pCsr->pStmt)==0 );
121659 fts3EvalNextRow(pCsr, pRoot, &rc);
121660 pCsr->isEof = pRoot->bEof;
121661 pCsr->isRequireSeek = 1;
121662 pCsr->isMatchinfoNeeded = 1;
121663 pCsr->iPrevId = pRoot->iDocid;
121664 }while( pCsr->isEof==0
121666 && fts3EvalTestDeferredAndNear(pCsr, &rc)
121669 if( rc==SQLITE_OK && pCsr->isEof==0 ){
121674 pCsr->isEof = 0;
121675 pCsr->iPrevId = iPrevId;
121686 fts3EvalRestart(pCsr, pRoot, &rc);
121688 fts3EvalNextRow(pCsr, pRoot, &rc);
121691 fts3EvalTestDeferredAndNear(pCsr, &rc);
121728 Fts3Cursor *pCsr, /* FTS cursor handle */
121732 Fts3Table *pTab = (Fts3Table *)pCsr->base.pVtab;
121737 assert( pCsr->nDoc>0 );
121739 aiOut[iCol*3 + 1] = (u32)pCsr->nDoc;
121740 aiOut[iCol*3 + 2] = (u32)pCsr->nDoc;
121743 rc = fts3EvalGatherStats(pCsr, pExpr);
121776 Fts3Cursor *pCsr, /* FTS3 cursor object */
121781 Fts3Table *pTab = (Fts3Table *)pCsr->base.pVtab;
121788 || pExpr->iDocid!=pCsr->iPrevId
122047 Fts3auxCursor *pCsr; /* Pointer to cursor object to return */
122051 pCsr = (Fts3auxCursor *)sqlite3_malloc(sizeof(Fts3auxCursor));
122052 if( !pCsr ) return SQLITE_NOMEM;
122053 memset(pCsr, 0, sizeof(Fts3auxCursor));
122055 *ppCsr = (sqlite3_vtab_cursor *)pCsr;
122064 Fts3auxCursor *pCsr = (Fts3auxCursor *)pCursor;
122067 sqlite3Fts3SegReaderFinish(&pCsr->csr);
122068 sqlite3_free((void *)pCsr->filter.zTerm);
122069 sqlite3_free(pCsr->zStop);
122070 sqlite3_free(pCsr->aStat);
122071 sqlite3_free(pCsr);
122075 static int fts3auxGrowStatArray(Fts3auxCursor *pCsr, int nSize){
122076 if( nSize>pCsr->nStat ){
122078 aNew = (struct Fts3auxColstats *)sqlite3_realloc(pCsr->aStat,
122082 memset(&aNew[pCsr->nStat], 0,
122083 sizeof(struct Fts3auxColstats) * (nSize - pCsr->nStat)
122085 pCsr->aStat = aNew;
122086 pCsr->nStat = nSize;
122095 Fts3auxCursor *pCsr = (Fts3auxCursor *)pCursor;
122100 pCsr->iRowid++;
122102 for(pCsr->iCol++; pCsr->iCol<pCsr->nStat; pCsr->iCol++){
122103 if( pCsr->aStat[pCsr->iCol].nDoc>0 ) return SQLITE_OK;
122106 rc = sqlite3Fts3SegReaderStep(pFts3, &pCsr->csr);
122109 int nDoclist = pCsr->csr.nDoclist;
122110 char *aDoclist = pCsr->csr.aDoclist;
122115 if( pCsr->zStop ){
122116 int n = (pCsr->nStop<pCsr->csr.nTerm) ? pCsr->nStop : pCsr->csr.nTerm;
122117 int mc = memcmp(pCsr->zStop, pCsr->csr.zTerm, n);
122118 if( mc<0 || (mc==0 && pCsr->csr.nTerm>pCsr->nStop) ){
122119 pCsr->isEof = 1;
122124 if( fts3auxGrowStatArray(pCsr, 2) ) return SQLITE_NOMEM;
122125 memset(pCsr->aStat, 0, sizeof(struct Fts3auxColstats) * pCsr->nStat);
122135 pCsr->aStat[0].nDoc++;
122151 pCsr->aStat[1].nDoc++;
122162 pCsr->aStat[iCol+1].nOcc++;
122163 pCsr->aStat[0].nOcc++;
122170 if( fts3auxGrowStatArray(pCsr, iCol+2) ) return SQLITE_NOMEM;
122171 pCsr->aStat[iCol+1].nDoc++;
122177 pCsr->iCol = 0;
122180 pCsr->isEof = 1;
122195 Fts3auxCursor *pCsr = (Fts3auxCursor *)pCursor;
122211 testcase(pCsr->filter.zTerm);
122212 sqlite3Fts3SegReaderFinish(&pCsr->csr);
122213 sqlite3_free((void *)pCsr->filter.zTerm);
122214 sqlite3_free(pCsr->aStat);
122215 memset(&pCsr->csr, 0, ((u8*)&pCsr[1]) - (u8*)&pCsr->csr);
122217 pCsr->filter.flags = FTS3_SEGMENT_REQUIRE_POS|FTS3_SEGMENT_IGNORE_EMPTY;
122218 if( isScan ) pCsr->filter.flags |= FTS3_SEGMENT_SCAN;
122223 pCsr->filter.zTerm = sqlite3_mprintf("%s", zStr);
122224 pCsr->filter.nTerm = sqlite3_value_bytes(apVal[0]);
122225 if( pCsr->filter.zTerm==0 ) return SQLITE_NOMEM;
122230 pCsr->zStop = sqlite3_mprintf("%s", sqlite3_value_text(apVal[iIdx]));
122231 pCsr->nStop = sqlite3_value_bytes(apVal[iIdx]);
122232 if( pCsr->zStop==0 ) return SQLITE_NOMEM;
122236 pCsr->filter.zTerm, pCsr->filter.nTerm, 0, isScan, &pCsr->csr
122239 rc = sqlite3Fts3SegReaderStart(pFts3, &pCsr->csr, &pCsr->filter);
122250 Fts3auxCursor *pCsr = (Fts3auxCursor *)pCursor;
122251 return pCsr->isEof;
122289 Fts3auxCursor *pCsr = (Fts3auxCursor *)pCursor;
122290 *pRowid = pCsr->iRowid;
122471 sqlite3_tokenizer_cursor *pCsr = 0;
122474 rc = pModule->xOpen(pTokenizer, z, n, &pCsr);
122475 assert( rc==SQLITE_OK || pCsr==0 );
122477 pCsr->pTokenizer = pTokenizer;
122479 rc = pModule->xLanguageid(pCsr, iLangid);
122481 pModule->xClose(pCsr);
122482 pCsr = 0;
122486 *ppCsr = pCsr;
124621 sqlite3_tokenizer_cursor *pCsr = 0;
124669 if( sqlite3Fts3OpenTokenizer(pTokenizer, 0, zInput, nInput, &pCsr) ){
124674 while( SQLITE_OK==p->xNext(pCsr, &zToken, &nToken, &iStart, &iEnd, &iPos) ){
124682 if( SQLITE_OK!=p->xClose(pCsr) ){
125805 sqlite3_tokenizer_cursor *pCsr;
125819 rc = sqlite3Fts3OpenTokenizer(pTokenizer, iLangid, zText, -1, &pCsr);
125826 && SQLITE_OK==(rc = xNext(pCsr, &zToken, &nToken, &iStart, &iEnd, &iPos))
125855 pModule->xClose(pCsr);
126522 Fts3Cursor *pCsr,
126526 Fts3Table *p = (Fts3Table*)pCsr->base.pVtab;
127598 Fts3MultiSegReader *pCsr, /* Cursor object */
127603 int nSeg = pCsr->nSegment;
127611 for(i=0; pCsr->bRestart==0 && i<pCsr->nSegment; i++){
127613 Fts3SegReader *pSeg = pCsr->apSegment[i];
127623 fts3SegReaderSort(pCsr->apSegment, nSeg, nSeg, fts3SegReaderCmp);
127630 Fts3MultiSegReader *pCsr, /* Cursor object */
127633 pCsr->pFilter = pFilter;
127634 return fts3SegReaderStart(p, pCsr, pFilter->zTerm, pFilter->nTerm);
127639 Fts3MultiSegReader *pCsr, /* Cursor object */
127646 int nSegment = pCsr->nSegment;
127651 assert( pCsr->pFilter==0 );
127655 rc = fts3SegReaderStart(p, pCsr, zTerm, nTerm);
127660 Fts3SegReader *pSeg = pCsr->apSegment[i];
127665 pCsr->nAdvance = i;
127668 for(i=0; i<pCsr->nAdvance; i++){
127669 rc = fts3SegReaderFirstDocid(p, pCsr->apSegment[i]);
127672 fts3SegReaderSort(pCsr->apSegment, i, i, xCmp);
127675 pCsr->iColFilter = iCol;
127692 SQLITE_PRIVATE int sqlite3Fts3MsrIncrRestart(Fts3MultiSegReader *pCsr){
127695 assert( pCsr->zTerm==0 );
127696 assert( pCsr->nTerm==0 );
127697 assert( pCsr->aDoclist==0 );
127698 assert( pCsr->nDoclist==0 );
127700 pCsr->nAdvance = 0;
127701 pCsr->bRestart = 1;
127702 for(i=0; i<pCsr->nSegment; i++){
127703 pCsr->apSegment[i]->pOffsetList = 0;
127704 pCsr->apSegment[i]->nOffsetList = 0;
127705 pCsr->apSegment[i]->iDocid = 0;
127714 Fts3MultiSegReader *pCsr /* Cursor object */
127718 int isIgnoreEmpty = (pCsr->pFilter->flags & FTS3_SEGMENT_IGNORE_EMPTY);
127719 int isRequirePos = (pCsr->pFilter->flags & FTS3_SEGMENT_REQUIRE_POS);
127720 int isColFilter = (pCsr->pFilter->flags & FTS3_SEGMENT_COLUMN_FILTER);
127721 int isPrefix = (pCsr->pFilter->flags & FTS3_SEGMENT_PREFIX);
127722 int isScan = (pCsr->pFilter->flags & FTS3_SEGMENT_SCAN);
127723 int isFirst = (pCsr->pFilter->flags & FTS3_SEGMENT_FIRST);
127725 Fts3SegReader **apSegment = pCsr->apSegment;
127726 int nSegment = pCsr->nSegment;
127727 Fts3SegFilter *pFilter = pCsr->pFilter;
127732 if( pCsr->nSegment==0 ) return SQLITE_OK;
127738 /* Advance the first pCsr->nAdvance entries in the apSegment[] array
127741 for(i=0; i<pCsr->nAdvance; i++){
127750 fts3SegReaderSort(apSegment, nSegment, pCsr->nAdvance, fts3SegReaderCmp);
127751 pCsr->nAdvance = 0;
127757 pCsr->nTerm = apSegment[0]->nTerm;
127758 pCsr->zTerm = apSegment[0]->zTerm;
127768 if( pCsr->nTerm<pFilter->nTerm
127769 || (!isPrefix && pCsr->nTerm>pFilter->nTerm)
127770 || memcmp(pCsr->zTerm, pFilter->zTerm, pFilter->nTerm)
127779 && apSegment[nMerge]->nTerm==pCsr->nTerm
127780 && 0==memcmp(pCsr->zTerm, apSegment[nMerge]->zTerm, pCsr->nTerm)
127791 pCsr->nDoclist = apSegment[0]->nDoclist;
127793 rc = fts3MsrBufferData(pCsr, apSegment[0]->aDoclist, pCsr->nDoclist);
127794 pCsr->aDoclist = pCsr->aBuffer;
127796 pCsr->aDoclist = apSegment[0]->aDoclist;
127845 if( nDoclist+nByte>pCsr->nBuffer ){
127847 pCsr->nBuffer = (nDoclist+nByte)*2;
127848 aNew = sqlite3_realloc(pCsr->aBuffer, pCsr->nBuffer);
127852 pCsr->aBuffer = aNew;
127856 char *a = &pCsr->aBuffer[nDoclist];
127865 nDoclist += sqlite3Fts3PutVarint(&pCsr->aBuffer[nDoclist], iDelta);
127868 memcpy(&pCsr->aBuffer[nDoclist], pList, nList);
127870 pCsr->aBuffer[nDoclist++] = '\0';
127878 pCsr->aDoclist = pCsr->aBuffer;
127879 pCsr->nDoclist = nDoclist;
127883 pCsr->nAdvance = nMerge;
127891 Fts3MultiSegReader *pCsr /* Cursor object */
127893 if( pCsr ){
127895 for(i=0; i<pCsr->nSegment; i++){
127896 sqlite3Fts3SegReaderFree(pCsr->apSegment[i]);
127898 sqlite3_free(pCsr->apSegment);
127899 sqlite3_free(pCsr->aBuffer);
127901 pCsr->nSegment = 0;
127902 pCsr->apSegment = 0;
127903 pCsr->aBuffer = 0;
128314 SQLITE_PRIVATE void sqlite3Fts3FreeDeferredDoclists(Fts3Cursor *pCsr){
128316 for(pDef=pCsr->pDeferred; pDef; pDef=pDef->pNext){
128323 ** Free all entries in the pCsr->pDeffered list. Entries are added to
128326 SQLITE_PRIVATE void sqlite3Fts3FreeDeferredTokens(Fts3Cursor *pCsr){
128329 for(pDef=pCsr->pDeferred; pDef; pDef=pNext){
128334 pCsr->pDeferred = 0;
128338 ** Generate deferred-doclists for all tokens in the pCsr->pDeferred list
128339 ** based on the row that pCsr currently points to.
128345 SQLITE_PRIVATE int sqlite3Fts3CacheDeferredDoclists(Fts3Cursor *pCsr){
128347 if( pCsr->pDeferred ){
128349 sqlite3_int64 iDocid; /* Docid of the row pCsr points to */
128352 Fts3Table *p = (Fts3Table *)pCsr->base.pVtab;
128356 assert( pCsr->isRequireSeek==0 );
128357 iDocid = sqlite3_column_int64(pCsr->pStmt, 0);
128360 const char *zText = (const char *)sqlite3_column_text(pCsr->pStmt, i+1);
128363 rc = sqlite3Fts3OpenTokenizer(pT, pCsr->iLangid, zText, -1, &pTC);
128371 for(pDef=pCsr->pDeferred; pDef && rc==SQLITE_OK; pDef=pDef->pNext){
128386 for(pDef=pCsr->pDeferred; pDef && rc==SQLITE_OK; pDef=pDef->pNext){
128424 ** Add an entry for token pToken to the pCsr->pDeferred list.
128427 Fts3Cursor *pCsr, /* Fts3 table cursor */
128438 pDeferred->pNext = pCsr->pDeferred;
128440 pCsr->pDeferred = pDeferred;
128699 Fts3Cursor *pCsr; /* FTS3 Cursor */
128713 Fts3Cursor *pCsr; /* Cursor snippet is being generated from */
128855 ** pCsr.
128864 Fts3Cursor *pCsr, /* Fts3 cursor for current query */
128870 sCtx.pCsr = pCsr;
128871 rc = fts3ExprIterate(pCsr->pExpr, fts3ExprLoadDoclistsCb, (void *)&sCtx);
128979 char *pCsr = pPhrase->pTail;
128998 if( 0==(*pCsr & 0x0FE) ) break;
128999 fts3GetDeltaPosition(&pCsr, &iCsr);
129018 char *pCsr;
129022 pCsr = sqlite3Fts3EvalPhrasePoslist(p->pCsr, pExpr, p->iCol);
129023 if( pCsr ){
129025 pPhrase->pList = pCsr;
129026 fts3GetDeltaPosition(&pCsr, &iFirst);
129028 pPhrase->pHead = pCsr;
129029 pPhrase->pTail = pCsr;
129056 Fts3Cursor *pCsr, /* Cursor to create snippet for */
129075 rc = fts3ExprLoadDoclists(pCsr, &nList, 0);
129093 sIter.pCsr = pCsr;
129098 (void)fts3ExprIterate(pCsr->pExpr, fts3SnippetFindPositions, (void *)&sIter);
129250 ** Extract the snippet text for fragment pFragment from cursor pCsr and
129254 Fts3Cursor *pCsr, /* FTS3 Cursor */
129264 Fts3Table *pTab = (Fts3Table *)pCsr->base.pVtab;
129279 zDoc = (const char *)sqlite3_column_text(pCsr->pStmt, iCol);
129281 if( sqlite3_column_type(pCsr->pStmt, iCol)!=SQLITE_NULL ){
129286 nDoc = sqlite3_column_bytes(pCsr->pStmt, iCol);
129290 rc = sqlite3Fts3OpenTokenizer(pTab->pTokenizer, pCsr->iLangid, zDoc,nDoc,&pC);
129316 pTab, pCsr->iLangid, nSnippet, &zDoc[iBegin], n, &iPos, &hlmask
129434 char *pCsr;
129435 pCsr = sqlite3Fts3EvalPhrasePoslist(p->pCursor, pExpr, i);
129436 if( pCsr ){
129437 p->aMatchinfo[iStart+i*3] = fts3ColumnlistCount(&pCsr);
129579 static int fts3MatchinfoLcs(Fts3Cursor *pCsr, MatchInfo *pInfo){
129588 aIter = sqlite3_malloc(sizeof(LcsIterator) * pCsr->nPhrase);
129590 memset(aIter, 0, sizeof(LcsIterator) * pCsr->nPhrase);
129591 (void)fts3ExprIterate(pCsr->pExpr, fts3MatchinfoLcsCb, (void*)aIter);
129605 pIt->pRead = sqlite3Fts3EvalPhrasePoslist(pCsr, pIt->pExpr, iCol);
129662 Fts3Cursor *pCsr, /* FTS3 cursor object */
129669 Fts3Table *pTab = (Fts3Table *)pCsr->base.pVtab;
129712 rc = sqlite3Fts3SelectDocsize(pTab, pCsr->iPrevId, &pSelectDocsize);
129727 rc = fts3ExprLoadDoclists(pCsr, 0, 0);
129729 rc = fts3MatchinfoLcs(pCsr, pInfo);
129736 pExpr = pCsr->pExpr;
129737 rc = fts3ExprLoadDoclists(pCsr, 0, 0);
129740 if( pCsr->pDeferred ){
129761 ** Populate pCsr->aMatchinfo[] with data for the current row. The
129765 Fts3Cursor *pCsr, /* FTS3 Cursor object */
129769 Fts3Table *pTab = (Fts3Table *)pCsr->base.pVtab;
129774 sInfo.pCursor = pCsr;
129780 if( pCsr->zMatchinfo && strcmp(pCsr->zMatchinfo, zArg) ){
129781 assert( pCsr->aMatchinfo );
129782 sqlite3_free(pCsr->aMatchinfo);
129783 pCsr->zMatchinfo = 0;
129784 pCsr->aMatchinfo = 0;
129792 if( pCsr->aMatchinfo==0 ){
129798 pCsr->nPhrase = fts3ExprPhraseCount(pCsr->pExpr);
129799 sInfo.nPhrase = pCsr->nPhrase;
129808 pCsr->aMatchinfo = (u32 *)sqlite3_malloc(sizeof(u32)*nMatchinfo + nArg + 1);
129809 if( !pCsr->aMatchinfo ) return SQLITE_NOMEM;
129811 pCsr->zMatchinfo = (char *)&pCsr->aMatchinfo[nMatchinfo];
129812 pCsr->nMatchinfo = nMatchinfo;
129813 memcpy(pCsr->zMatchinfo, zArg, nArg+1);
129814 memset(pCsr->aMatchinfo, 0, sizeof(u32)*nMatchinfo);
129815 pCsr->isMatchinfoNeeded = 1;
129819 sInfo.aMatchinfo = pCsr->aMatchinfo;
129820 sInfo.nPhrase = pCsr->nPhrase;
129821 if( pCsr->isMatchinfoNeeded ){
129822 rc = fts3MatchinfoValues(pCsr, bGlobal, &sInfo, zArg);
129823 pCsr->isMatchinfoNeeded = 0;
129834 Fts3Cursor *pCsr, /* Cursor object */
129841 Fts3Table *pTab = (Fts3Table *)pCsr->base.pVtab;
129858 if( !pCsr->pExpr ){
129892 rc = fts3BestSnippet(nFToken, pCsr, iRead, mCovered, &mSeen, &sF, &iS);
129915 rc = fts3SnippetText(pCsr, &aSnippet[i],
129941 Fts3Cursor *pCsr;
129959 pList = sqlite3Fts3EvalPhrasePoslist(p->pCsr, pExpr, p->iCol);
129981 Fts3Cursor *pCsr /* Cursor object */
129983 Fts3Table *pTab = (Fts3Table *)pCsr->base.pVtab;
129993 if( !pCsr->pExpr ){
129999 assert( pCsr->isRequireSeek==0 );
130002 rc = fts3ExprLoadDoclists(pCsr, 0, &nToken);
130011 sCtx.iDocid = pCsr->iPrevId;
130012 sCtx.pCsr = pCsr;
130031 (void)fts3ExprIterate(pCsr->pExpr, fts3ExprTermOffsetInit, (void *)&sCtx);
130039 zDoc = (const char *)sqlite3_column_text(pCsr->pStmt, iCol+1);
130040 nDoc = sqlite3_column_bytes(pCsr->pStmt, iCol+1);
130042 if( sqlite3_column_type(pCsr->pStmt, iCol+1)==SQLITE_NULL ){
130050 rc = sqlite3Fts3OpenTokenizer(pTab->pTokenizer, pCsr->iLangid,
130119 Fts3Cursor *pCsr, /* FTS3 table cursor */
130122 Fts3Table *pTab = (Fts3Table *)pCsr->base.pVtab;
130141 if( !pCsr->pExpr ){
130147 rc = fts3GetMatchinfo(pCsr, zFormat);
130153 int n = pCsr->nMatchinfo * sizeof(u32);
130154 sqlite3_result_blob(pContext, pCsr->aMatchinfo, n, SQLITE_TRANSIENT);
130963 RtreeCursor *pCsr;
130965 pCsr = (RtreeCursor *)sqlite3_malloc(sizeof(RtreeCursor));
130966 if( pCsr ){
130967 memset(pCsr, 0, sizeof(RtreeCursor));
130968 pCsr->base.pVtab = pVTab;
130971 *ppCursor = (sqlite3_vtab_cursor *)pCsr;
130980 static void freeCursorConstraints(RtreeCursor *pCsr){
130981 if( pCsr->aConstraint ){
130983 for(i=0; i<pCsr->nConstraint; i++){
130984 sqlite3_rtree_geometry *pGeom = pCsr->aConstraint[i].pGeom;
130990 sqlite3_free(pCsr->aConstraint);
130991 pCsr->aConstraint = 0;
131001 RtreeCursor *pCsr = (RtreeCursor *)cur;
131002 freeCursorConstraints(pCsr);
131003 rc = nodeRelease(pRtree, pCsr->pNode);
131004 sqlite3_free(pCsr);
131015 RtreeCursor *pCsr = (RtreeCursor *)cur;
131016 return (pCsr->pNode==0);
131245 RtreeCursor *pCsr = (RtreeCursor *)pVtabCursor;
131252 assert( pCsr->pNode );
131254 if( pCsr->iStrategy==1 ){
131256 nodeRelease(pRtree, pCsr->pNode);
131257 pCsr->pNode = 0;
131261 while( pCsr->pNode ){
131262 RtreeNode *pNode = pCsr->pNode;
131264 for(pCsr->iCell++; pCsr->iCell<nCell; pCsr->iCell++){
131266 rc = descendToCell(pRtree, pCsr, iHeight, &isEof);
131271 pCsr->pNode = pNode->pParent;
131272 rc = nodeParentIndex(pRtree, pNode, &pCsr->iCell);
131276 nodeReference(pCsr->pNode);
131290 RtreeCursor *pCsr = (RtreeCursor *)pVtabCursor;
131292 assert(pCsr->pNode);
131293 *pRowid = nodeGetRowid(pRtree, pCsr->pNode, pCsr->iCell);
131303 RtreeCursor *pCsr = (RtreeCursor *)cur;
131306 i64 iRowid = nodeGetRowid(pRtree, pCsr->pNode, pCsr->iCell);
131310 nodeGetCoord(pRtree, pCsr->pNode, pCsr->iCell, i-1, &c);
131398 RtreeCursor *pCsr = (RtreeCursor *)pVtabCursor;
131406 freeCursorConstraints(pCsr);
131407 pCsr->iStrategy = idxNum;
131414 pCsr->pNode = pLeaf;
131417 rc = nodeRowidIndex(pRtree, pLeaf, iRowid, &pCsr->iCell);
131424 pCsr->aConstraint = sqlite3_malloc(sizeof(RtreeConstraint)*argc);
131425 pCsr->nConstraint = argc;
131426 if( !pCsr->aConstraint ){
131429 memset(pCsr->aConstraint, 0, sizeof(RtreeConstraint)*argc);
131433 RtreeConstraint *p = &pCsr->aConstraint[ii];
131453 pCsr->pNode = 0;
131459 pCsr->pNode = pRoot;
131460 for(pCsr->iCell=0; rc==SQLITE_OK && pCsr->iCell<nCell; pCsr->iCell++){
131461 assert( pCsr->pNode==pRoot );
131462 rc = descendToCell(pRtree, pCsr, pRtree->iDepth, &isEof);
131468 assert( pCsr->pNode==pRoot );
131470 pCsr->pNode = 0;
131472 assert( rc!=SQLITE_OK || !pCsr->pNode || pCsr->iCell<NCELL(pCsr->pNode) );
134048 IcuCursor *pCsr;
134064 pCsr = (IcuCursor *)sqlite3_malloc(
134069 if( !pCsr ){
134072 memset(pCsr, 0, sizeof(IcuCursor));
134073 pCsr->aChar = (UChar *)&pCsr[1];
134074 pCsr->aOffset = (int *)&pCsr->aChar[nChar];
134076 pCsr->aOffset[iOut] = iInput;
134081 U16_APPEND(pCsr->aChar, iOut, nChar, c, isError);
134083 sqlite3_free(pCsr);
134086 pCsr->aOffset[iOut] = iInput;
134095 pCsr->pIter = ubrk_open(UBRK_WORD, p->zLocale, pCsr->aChar, iOut, &status);
134097 sqlite3_free(pCsr);
134100 pCsr->nChar = iOut;
134102 ubrk_first(pCsr->pIter);
134103 *ppCursor = (sqlite3_tokenizer_cursor *)pCsr;
134111 IcuCursor *pCsr = (IcuCursor *)pCursor;
134112 ubrk_close(pCsr->pIter);
134113 sqlite3_free(pCsr->zBuffer);
134114 sqlite3_free(pCsr);
134129 IcuCursor *pCsr = (IcuCursor *)pCursor;
134138 iStart = ubrk_current(pCsr->pIter);
134139 iEnd = ubrk_next(pCsr->pIter);
134146 U8_NEXT(pCsr->aChar, iWhite, pCsr->nChar, c);
134159 char *zNew = sqlite3_realloc(pCsr->zBuffer, nByte);
134163 pCsr->zBuffer = zNew;
134164 pCsr->nBuffer = nByte;
134168 pCsr->zBuffer, pCsr->nBuffer, &nByte, /* Output vars */
134169 &pCsr->aChar[iStart], iEnd-iStart, /* Input vars */
134172 } while( nByte>pCsr->nBuffer );
134174 *ppToken = pCsr->zBuffer;
134176 *piStartOffset = pCsr->aOffset[iStart];
134177 *piEndOffset = pCsr->aOffset[iEnd];
134178 *piPosition = pCsr->iToken++;