Lines Matching defs:pReader

137977 static int fts3SegReaderIncrRead(Fts3SegReader *pReader){
137981 nRead = MIN(pReader->nNode - pReader->nPopulate, FTS3_NODE_CHUNKSIZE);
137983 pReader->pBlob,
137984 &pReader->aNode[pReader->nPopulate],
137986 pReader->nPopulate
137990 pReader->nPopulate += nRead;
137991 memset(&pReader->aNode[pReader->nPopulate], 0, FTS3_NODE_PADDING);
137992 if( pReader->nPopulate==pReader->nNode ){
137993 sqlite3_blob_close(pReader->pBlob);
137994 pReader->pBlob = 0;
137995 pReader->nPopulate = 0;
138001 static int fts3SegReaderRequire(Fts3SegReader *pReader, char *pFrom, int nByte){
138003 assert( !pReader->pBlob
138004 || (pFrom>=pReader->aNode && pFrom<&pReader->aNode[pReader->nNode])
138006 while( pReader->pBlob && rc==SQLITE_OK
138007 && (pFrom - pReader->aNode + nByte)>pReader->nPopulate
138009 rc = fts3SegReaderIncrRead(pReader);
138033 Fts3SegReader *pReader,
138041 if( !pReader->aDoclist ){
138042 pNext = pReader->aNode;
138044 pNext = &pReader->aDoclist[pReader->nDoclist];
138047 if( !pNext || pNext>=&pReader->aNode[pReader->nNode] ){
138049 if( fts3SegReaderIsPending(pReader) ){
138050 Fts3HashElem *pElem = *(pReader->ppNextElem);
138052 pReader->aNode = 0;
138055 pReader->zTerm = (char *)fts3HashKey(pElem);
138056 pReader->nTerm = fts3HashKeysize(pElem);
138057 pReader->nNode = pReader->nDoclist = pList->nData + 1;
138058 pReader->aNode = pReader->aDoclist = pList->aData;
138059 pReader->ppNextElem++;
138060 assert( pReader->aNode );
138065 fts3SegReaderSetEof(pReader);
138069 assert( pReader->iCurrentBlock<=pReader->iLeafEndBlock );
138070 if( pReader->iCurrentBlock>=pReader->iLeafEndBlock ){
138075 p, ++pReader->iCurrentBlock, &pReader->aNode, &pReader->nNode,
138076 (bIncr ? &pReader->nPopulate : 0)
138079 assert( pReader->pBlob==0 );
138080 if( bIncr && pReader->nPopulate<pReader->nNode ){
138081 pReader->pBlob = p->pSegments;
138084 pNext = pReader->aNode;
138087 assert( !fts3SegReaderIsPending(pReader) );
138089 rc = fts3SegReaderRequire(pReader, pNext, FTS3_VARINT_MAX*2);
138097 || &pNext[nSuffix]>&pReader->aNode[pReader->nNode]
138102 if( nPrefix+nSuffix>pReader->nTermAlloc ){
138104 char *zNew = sqlite3_realloc(pReader->zTerm, nNew);
138108 pReader->zTerm = zNew;
138109 pReader->nTermAlloc = nNew;
138112 rc = fts3SegReaderRequire(pReader, pNext, nSuffix+FTS3_VARINT_MAX);
138115 memcpy(&pReader->zTerm[nPrefix], pNext, nSuffix);
138116 pReader->nTerm = nPrefix+nSuffix;
138118 pNext += fts3GetVarint32(pNext, &pReader->nDoclist);
138119 pReader->aDoclist = pNext;
138120 pReader->pOffsetList = 0;
138126 if( &pReader->aDoclist[pReader->nDoclist]>&pReader->aNode[pReader->nNode]
138127 || (pReader->nPopulate==0 && pReader->aDoclist[pReader->nDoclist-1])
138138 static int fts3SegReaderFirstDocid(Fts3Table *pTab, Fts3SegReader *pReader){
138140 assert( pReader->aDoclist );
138141 assert( !pReader->pOffsetList );
138142 if( pTab->bDescIdx && fts3SegReaderIsPending(pReader) ){
138144 pReader->iDocid = 0;
138145 pReader->nOffsetList = 0;
138147 pReader->aDoclist, pReader->nDoclist, &pReader->pOffsetList,
138148 &pReader->iDocid, &pReader->nOffsetList, &bEof
138151 rc = fts3SegReaderRequire(pReader, pReader->aDoclist, FTS3_VARINT_MAX);
138153 int n = sqlite3Fts3GetVarint(pReader->aDoclist, &pReader->iDocid);
138154 pReader->pOffsetList = &pReader->aDoclist[n];
138172 Fts3SegReader *pReader, /* Reader to advance to next docid */
138177 char *p = pReader->pOffsetList;
138182 if( pTab->bDescIdx && fts3SegReaderIsPending(pReader) ){
138188 *ppOffsetList = pReader->pOffsetList;
138189 *pnOffsetList = pReader->nOffsetList - 1;
138192 pReader->aDoclist, pReader->nDoclist, &p, &pReader->iDocid,
138193 &pReader->nOffsetList, &bEof
138196 pReader->pOffsetList = 0;
138198 pReader->pOffsetList = p;
138201 char *pEnd = &pReader->aDoclist[pReader->nDoclist];
138212 ** the populated part of pReader->aNode[].
138217 if( pReader->pBlob==0 || p<&pReader->aNode[pReader->nPopulate] ) break;
138218 rc = fts3SegReaderIncrRead(pReader);
138227 *ppOffsetList = pReader->pOffsetList;
138228 *pnOffsetList = (int)(p - pReader->pOffsetList - 1);
138240 pReader->pOffsetList = 0;
138242 rc = fts3SegReaderRequire(pReader, p, FTS3_VARINT_MAX);
138245 pReader->pOffsetList = p + sqlite3Fts3GetVarint(p, &iDelta);
138247 pReader->iDocid -= iDelta;
138249 pReader->iDocid += iDelta;
138274 Fts3SegReader *pReader = pMsr->apSegment[ii];
138275 if( !fts3SegReaderIsPending(pReader)
138276 && !fts3SegReaderIsRootOnly(pReader)
138279 for(jj=pReader->iStartBlock; jj<=pReader->iLeafEndBlock; jj++){
138297 SQLITE_PRIVATE void sqlite3Fts3SegReaderFree(Fts3SegReader *pReader){
138298 if( pReader && !fts3SegReaderIsPending(pReader) ){
138299 sqlite3_free(pReader->zTerm);
138300 if( !fts3SegReaderIsRootOnly(pReader) ){
138301 sqlite3_free(pReader->aNode);
138302 sqlite3_blob_close(pReader->pBlob);
138305 sqlite3_free(pReader);
138321 Fts3SegReader *pReader; /* Newly allocated SegReader object */
138329 pReader = (Fts3SegReader *)sqlite3_malloc(sizeof(Fts3SegReader) + nExtra);
138330 if( !pReader ){
138333 memset(pReader, 0, sizeof(Fts3SegReader));
138334 pReader->iIdx = iAge;
138335 pReader->bLookup = bLookup!=0;
138336 pReader->iStartBlock = iStartLeaf;
138337 pReader->iLeafEndBlock = iEndLeaf;
138338 pReader->iEndBlock = iEndBlock;
138342 pReader->aNode = (char *)&pReader[1];
138343 pReader->rootOnly = 1;
138344 pReader->nNode = nRoot;
138345 memcpy(pReader->aNode, zRoot, nRoot);
138346 memset(&pReader->aNode[nRoot], 0, FTS3_NODE_PADDING);
138348 pReader->iCurrentBlock = iStartLeaf-1;
138350 *ppReader = pReader;
138400 Fts3SegReader *pReader = 0; /* Fts3SegReader object to return */
138458 pReader = (Fts3SegReader *)sqlite3_malloc(nByte);
138459 if( !pReader ){
138462 memset(pReader, 0, nByte);
138463 pReader->iIdx = 0x7FFFFFFF;
138464 pReader->ppNextElem = (Fts3HashElem **)&pReader[1];
138465 memcpy(pReader->ppNextElem, aElem, nElem*sizeof(Fts3HashElem *));
138472 *ppReader = pReader;