Lines Matching refs:pPhrase

193714   Fts3Phrase *pPhrase;       /* Valid if eType==FTSQUERY_PHRASE */  member
197857 int nToken = pExpr->pPhrase->nToken;
197860 Fts3PhraseToken *pToken = &pExpr->pPhrase->aToken[i];
197869 assert( pExpr->pPhrase->iDoclistToken==0 );
197870 pExpr->pPhrase->iDoclistToken = -1;
197990 static int fts3EvalDeferredPhrase(Fts3Cursor *pCsr, Fts3Phrase *pPhrase){ argument
197995 char *aFree = (pPhrase->doclist.bFreeList ? pPhrase->doclist.pList : 0);
197997 for(iToken=0; iToken<pPhrase->nToken; iToken++){
197998 Fts3PhraseToken *pToken = &pPhrase->aToken[iToken];
198010 pPhrase->doclist.pList = 0;
198011 pPhrase->doclist.nList = 0;
198031 pPhrase->doclist.pList = 0;
198032 pPhrase->doclist.nList = 0;
198041 int nMaxUndeferred = pPhrase->iDoclistToken;
198043 pPhrase->doclist.pList = aPoslist;
198044 pPhrase->doclist.nList = nPoslist;
198045 pPhrase->doclist.iDocid = pCsr->iPrevId;
198046 pPhrase->doclist.bFreeList = 1;
198055 p2 = pPhrase->doclist.pList;
198058 p1 = pPhrase->doclist.pList;
198069 pPhrase->doclist.pList = aOut;
198072 pPhrase->doclist.bFreeList = 1;
198073 pPhrase->doclist.nList = (int)(aOut - pPhrase->doclist.pList);
198076 pPhrase->doclist.pList = 0;
198077 pPhrase->doclist.nList = 0;
198083 if( pPhrase->doclist.pList!=aFree ) sqlite3_free(aFree);
198322 Fts3Phrase *pPhrase, /* Phrase to advance token of */ argument
198329 if( pPhrase->iDoclistToken==iToken ){
198331 assert( pPhrase->aToken[iToken].pSegcsr==0 );
198332 fts3EvalDlPhraseNext(pTab, &pPhrase->doclist, pbEof);
198333 p->pList = pPhrase->doclist.pList;
198334 p->nList = pPhrase->doclist.nList;
198335 p->iDocid = pPhrase->doclist.iDocid;
198337 Fts3PhraseToken *pToken = &pPhrase->aToken[iToken];
198339 assert( pToken->pSegcsr || pPhrase->iDoclistToken>=0 );
198519 int nToken = pExpr->pPhrase->nToken;
198523 if( pExpr->pPhrase->aToken[i].pDeferred==0 ) break;
198527 *pRc = fts3EvalPhraseStart(pCsr, 1, pExpr->pPhrase);
198550 Fts3Phrase *pPhrase; /* The phrase the token belongs to */ member
198575 Fts3Phrase *pPhrase = pExpr->pPhrase; local
198577 for(i=0; *pRc==SQLITE_OK && i<pPhrase->nToken; i++){
198579 pTC->pPhrase = pPhrase;
198582 pTC->pToken = &pPhrase->aToken[i];
198583 pTC->iCol = pPhrase->iColumn;
198772 if( ii==0 || (pTC->pPhrase->nToken>1 && ii!=nToken-1) ){
198783 pTab, pTC->pPhrase, pTC->iToken,pList,nList
198789 pTC->pPhrase->doclist.aAll, pTC->pPhrase->doclist.nAll
198862 static void fts3EvalInvalidatePoslist(Fts3Phrase *pPhrase){ argument
198863 if( pPhrase->doclist.bFreeList ){
198864 sqlite3_free(pPhrase->doclist.pList);
198866 pPhrase->doclist.pList = 0;
198867 pPhrase->doclist.nList = 0;
198868 pPhrase->doclist.bFreeList = 0;
198898 Fts3Phrase *pPhrase /* The phrase object to trim the doclist of */ argument
198900 int nParam1 = nNear + pPhrase->nToken;
198907 assert( pPhrase->doclist.pList );
198909 p2 = pOut = pPhrase->doclist.pList;
198914 nNew = (int)(pOut - pPhrase->doclist.pList) - 1;
198915 assert_fts3_nc( nNew<=pPhrase->doclist.nList && nNew>0 );
198916 if( nNew>=0 && nNew<=pPhrase->doclist.nList ){
198917 assert( pPhrase->doclist.pList[nNew]=='\0' );
198918 memset(&pPhrase->doclist.pList[nNew], 0, pPhrase->doclist.nList - nNew);
198919 pPhrase->doclist.nList = nNew;
198921 *paPoslist = pPhrase->doclist.pList;
198922 *pnToken = pPhrase->nToken;
199014 if( pRight->pPhrase->doclist.aAll ){
199015 Fts3Doclist *pDl = &pRight->pPhrase->doclist;
199021 if( pLeft->pPhrase && pLeft->pPhrase->doclist.aAll ){
199022 Fts3Doclist *pDl = &pLeft->pPhrase->doclist;
199086 Fts3Phrase *pPhrase = pExpr->pPhrase; local
199087 fts3EvalInvalidatePoslist(pPhrase);
199088 *pRc = fts3EvalPhraseNext(pCsr, pPhrase, &pExpr->bEof);
199089 pExpr->iDocid = pPhrase->doclist.iDocid;
199144 assert( p->pRight->pPhrase->doclist.nList>0 );
199145 nTmp += p->pRight->pPhrase->doclist.nList;
199147 nTmp += p->pPhrase->doclist.nList;
199153 char *aPoslist = p->pPhrase->doclist.pList;
199154 int nToken = p->pPhrase->nToken;
199157 Fts3Phrase *pPhrase = p->pRight->pPhrase; local
199159 res = fts3EvalNearTrim(nNear, aTmp, &aPoslist, &nToken, pPhrase);
199162 aPoslist = pExpr->pRight->pPhrase->doclist.pList;
199163 nToken = pExpr->pRight->pPhrase->nToken;
199166 Fts3Phrase *pPhrase; local
199169 pPhrase = (
199170 p->eType==FTSQUERY_NEAR ? p->pRight->pPhrase : p->pPhrase
199172 res = fts3EvalNearTrim(nNear, aTmp, &aPoslist, &nToken, pPhrase);
199229 for(p=pExpr; p->pPhrase==0; p=p->pLeft){
199231 fts3EvalInvalidatePoslist(p->pRight->pPhrase);
199235 fts3EvalInvalidatePoslist(p->pPhrase);
199258 pExpr->iDocid==pCsr->iPrevId && pExpr->pPhrase->doclist.pList
199260 Fts3Phrase *pPhrase = pExpr->pPhrase; local
199262 fts3EvalInvalidatePoslist(pPhrase);
199264 *pRc = fts3EvalDeferredPhrase(pCsr, pPhrase);
199265 bHit = (pPhrase->doclist.pList!=0);
199272 && pExpr->pPhrase->doclist.nList>0
199383 Fts3Phrase *pPhrase = pExpr->pPhrase; local
199385 if( pPhrase ){
199386 fts3EvalInvalidatePoslist(pPhrase);
199387 if( pPhrase->bIncr ){
199389 for(i=0; i<pPhrase->nToken; i++){
199390 Fts3PhraseToken *pToken = &pPhrase->aToken[i];
199396 *pRc = fts3EvalPhraseStart(pCsr, 0, pPhrase);
199398 pPhrase->doclist.pNextDocid = 0;
199399 pPhrase->doclist.iDocid = 0;
199400 pPhrase->pOrPoslist = 0;
199440 Fts3Phrase *pPhrase = pExpr->pPhrase; local
199441 if( pPhrase && pPhrase->doclist.pList ){
199443 char *p = pPhrase->doclist.pList;
199657 Fts3Phrase *pPhrase = pExpr->pPhrase; local
199667 if( (pPhrase->iColumn<pTab->nColumn && pPhrase->iColumn!=iCol) ){
199672 pIter = pPhrase->doclist.pList;
199704 if( pPhrase->bIncr ){
199711 assert( rc!=SQLITE_OK || pPhrase->bIncr==0 );
199731 pPh = pTest->pPhrase;
199760 pIter = pPhrase->pOrPoslist;
199794 SQLITE_PRIVATE void sqlite3Fts3EvalPhraseCleanup(Fts3Phrase *pPhrase){ argument
199795 if( pPhrase ){
199797 sqlite3_free(pPhrase->doclist.aAll);
199798 fts3EvalInvalidatePoslist(pPhrase);
199799 memset(&pPhrase->doclist, 0, sizeof(Fts3Doclist));
199800 for(i=0; i<pPhrase->nToken; i++){
199801 fts3SegReaderCursorFree(pPhrase->aToken[i].pSegcsr);
199802 pPhrase->aToken[i].pSegcsr = 0;
200629 pRet->pPhrase = (Fts3Phrase *)&pRet[1];
200630 pRet->pPhrase->nToken = 1;
200631 pRet->pPhrase->iColumn = iCol;
200632 pRet->pPhrase->aToken[0].n = nToken;
200633 pRet->pPhrase->aToken[0].z = (char*)&pRet->pPhrase->aToken[1];
200634 memcpy(pRet->pPhrase->aToken[0].z, zToken, nToken);
200637 pRet->pPhrase->aToken[0].isPrefix = 1;
200648 pRet->pPhrase->aToken[0].bFirst = 1;
200776 p->pPhrase = (Fts3Phrase *)&p[1];
200777 p->pPhrase->iColumn = pParse->iDefaultCol;
200778 p->pPhrase->nToken = nToken;
200780 zBuf = (char *)&p->pPhrase->aToken[nToken];
200786 for(jj=0; jj<p->pPhrase->nToken; jj++){
200787 p->pPhrase->aToken[jj].z = zBuf;
200788 zBuf += p->pPhrase->aToken[jj].n;
201490 assert( p->eType==FTSQUERY_PHRASE || p->pPhrase==0 );
201491 sqlite3Fts3EvalPhraseCleanup(p->pPhrase);
201549 Fts3Phrase *pPhrase = pExpr->pPhrase; local
201552 "%zPHRASE %d 0", zBuf, pPhrase->iColumn);
201553 for(i=0; zBuf && i<pPhrase->nToken; i++){
201555 pPhrase->aToken[i].n, pPhrase->aToken[i].z,
201556 (pPhrase->aToken[i].isPrefix?"+":"")
210141 Fts3Phrase *pPhrase = pExpr->pPhrase; local
210147 p->nToken += pPhrase->nToken;
210228 SnippetPhrase *pPhrase = &pIter->aPhrase[i]; local
210229 fts3SnippetAdvance(&pPhrase->pHead, &pPhrase->iHead, pIter->nSnippet);
210236 SnippetPhrase *pPhrase = &pIter->aPhrase[i]; local
210237 if( pPhrase->pHead && pPhrase->iHead<iEnd ){
210238 iEnd = pPhrase->iHead;
210248 SnippetPhrase *pPhrase = &pIter->aPhrase[i]; local
210249 fts3SnippetAdvance(&pPhrase->pHead, &pPhrase->iHead, iEnd+1);
210250 fts3SnippetAdvance(&pPhrase->pTail, &pPhrase->iTail, iStart);
210276 SnippetPhrase *pPhrase = &pIter->aPhrase[i]; local
210277 if( pPhrase->pTail ){
210278 char *pCsr = pPhrase->pTail;
210279 i64 iCsr = pPhrase->iTail;
210294 for(j=0; j<pPhrase->nToken && j<pIter->nSnippet; j++){
210318 SnippetPhrase *pPhrase = &p->aPhrase[iPhrase]; local
210322 pPhrase->nToken = pExpr->pPhrase->nToken;
210327 pPhrase->pList = pCsr;
210332 pPhrase->pHead = pCsr;
210333 pPhrase->pTail = pCsr;
210334 pPhrase->iHead = iFirst;
210335 pPhrase->iTail = iFirst;
210339 pPhrase->pList==0 && pPhrase->pHead==0 && pPhrase->pTail==0
210717 Fts3Phrase *pPhrase = pExpr->pPhrase; local
210718 char *pIter = pPhrase->doclist.pList;
210730 if( (pPhrase->iColumn>=pTab->nColumn || pPhrase->iColumn==iCol) ){
211005 nToken -= pIter->pExpr->pPhrase->nToken;
211417 nTerm = pExpr->pPhrase->nToken;
211442 if( pExpr->pPhrase && pExpr->pPhrase->bIncr ){
211444 pExpr->pPhrase->bIncr = 0;
242227 Fts5ExprPhrase *pPhrase,
246815 Fts5ExprPhrase *pPhrase, /* Phrase object to initialize */ argument
246823 int bFirst = pPhrase->aTerm[0].bFirst;
246825 fts5BufferZero(&pPhrase->poslist);
246829 if( pPhrase->nTerm>ArraySize(aStatic) ){
246830 sqlite3_int64 nByte = sizeof(Fts5PoslistReader) * pPhrase->nTerm;
246834 memset(aIter, 0, sizeof(Fts5PoslistReader) * pPhrase->nTerm);
246837 for(i=0; i<pPhrase->nTerm; i++){
246838 Fts5ExprTerm *pTerm = &pPhrase->aTerm[i];
246864 for(i=0; i<pPhrase->nTerm; i++){
246879 rc = sqlite3Fts5PoslistWriterAppend(&pPhrase->poslist, &writer, iPos);
246883 for(i=0; i<pPhrase->nTerm; i++){
246889 *pbMatch = (pPhrase->poslist.n>0);
246890 for(i=0; i<pPhrase->nTerm; i++){
247116 Fts5ExprPhrase *pPhrase = pNear->apPhrase[0]; local
247117 pPhrase->poslist.n = 0;
247118 for(pTerm=&pPhrase->aTerm[0]; pTerm; pTerm=pTerm->pSynonym){
247122 pPhrase->poslist.n = 1;
247126 return pPhrase->poslist.n;
247134 Fts5ExprPhrase *pPhrase = pNear->apPhrase[i]; local
247135 if( pPhrase->nTerm>1 || pPhrase->aTerm[0].pSynonym
247136 || pNear->pColset || pPhrase->aTerm[0].bFirst
247139 rc = fts5ExprPhraseIsMatch(pNode, pPhrase, &bMatch);
247142 Fts5IndexIter *pIter = pPhrase->aTerm[0].pIter;
247143 fts5BufferSet(&rc, &pPhrase->poslist, pIter->nData, pIter->pData);
247174 Fts5ExprPhrase *pPhrase = pNear->apPhrase[i]; local
247175 if( pPhrase->nTerm==0 ){
247180 for(j=0; j<pPhrase->nTerm; j++){
247181 Fts5ExprTerm *pTerm = &pPhrase->aTerm[j];
247256 Fts5ExprPhrase *pPhrase = pNear->apPhrase[i]; local
247257 pPhrase->poslist.n = 0;
247334 Fts5ExprPhrase *pPhrase = pNear->apPhrase[i]; local
247335 for(j=0; j<pPhrase->nTerm; j++){
247336 Fts5ExprTerm *pTerm = &pPhrase->aTerm[j];
247347 Fts5IndexIter *pIter = pPhrase->aTerm[j].pIter;
247446 Fts5ExprPhrase *pPhrase = pNode->pNear->apPhrase[0]; local
247447 Fts5IndexIter *pIter = pPhrase->aTerm[0].pIter;
247450 assert( pNode->pNear->nPhrase==1 && pPhrase->nTerm==1 );
247451 assert( pPhrase->aTerm[0].pSynonym==0 );
247453 pPhrase->poslist.n = pIter->nData;
247455 pPhrase->poslist.p = (u8*)pIter->pData;
247458 pNode->bNomatch = (pPhrase->poslist.n==0);
247831 static void fts5ExprPhraseFree(Fts5ExprPhrase *pPhrase){ argument
247832 if( pPhrase ){
247834 for(i=0; i<pPhrase->nTerm; i++){
247837 Fts5ExprTerm *pTerm = &pPhrase->aTerm[i];
247847 if( pPhrase->poslist.nSpace>0 ) fts5BufferFree(&pPhrase->poslist);
247848 sqlite3_free(pPhrase);
247856 static void sqlite3Fts5ParseSetCaret(Fts5ExprPhrase *pPhrase){ argument
247857 if( pPhrase && pPhrase->nTerm ){
247858 pPhrase->aTerm[0].bFirst = 1;
247873 Fts5ExprPhrase *pPhrase /* Recently parsed phrase */ argument
247905 sqlite3Fts5ParsePhraseFree(pPhrase);
247913 if( pPhrase->nTerm==0 ){
247914 fts5ExprPhraseFree(pPhrase);
247917 pPhrase = pLast;
247920 pParse->apPhrase[pParse->nPhrase-2] = pPhrase;
247925 pRet->apPhrase[pRet->nPhrase++] = pPhrase;
247932 Fts5ExprPhrase *pPhrase; member
247951 Fts5ExprPhrase *pPhrase = pCtx->pPhrase; local
247959 if( pPhrase && pPhrase->nTerm>0 && (tflags & FTS5_TOKEN_COLOCATED) ){
247973 pSyn->pSynonym = pPhrase->aTerm[pPhrase->nTerm-1].pSynonym;
247974 pPhrase->aTerm[pPhrase->nTerm-1].pSynonym = pSyn;
247978 if( pPhrase==0 || (pPhrase->nTerm % SZALLOC)==0 ){
247980 int nNew = SZALLOC + (pPhrase ? pPhrase->nTerm : 0);
247982 pNew = (Fts5ExprPhrase*)sqlite3_realloc64(pPhrase,
247988 if( pPhrase==0 ) memset(pNew, 0, SZ_FTS5EXPRPHRASE(1));
247989 pCtx->pPhrase = pPhrase = pNew;
247995 pTerm = &pPhrase->aTerm[pPhrase->nTerm++];
248013 static void sqlite3Fts5ParsePhraseFree(Fts5ExprPhrase *pPhrase){ argument
248014 fts5ExprPhraseFree(pPhrase);
248067 sCtx.pPhrase = pAppend;
248081 fts5ExprPhraseFree(sCtx.pPhrase);
248082 sCtx.pPhrase = 0;
248087 fts5ExprPhraseFree(sCtx.pPhrase);
248093 if( sCtx.pPhrase==0 ){
248096 sCtx.pPhrase = sqlite3Fts5MallocZero(&pParse->rc, SZ_FTS5EXPRPHRASE(1));
248097 }else if( sCtx.pPhrase->nTerm ){
248098 sCtx.pPhrase->aTerm[sCtx.pPhrase->nTerm-1].bPrefix = (u8)bPrefix;
248101 pParse->apPhrase[pParse->nPhrase-1] = sCtx.pPhrase;
248104 return sCtx.pPhrase;
248163 sCtx.pPhrase->aTerm[i].bPrefix = pOrig->aTerm[i].bPrefix;
248164 sCtx.pPhrase->aTerm[i].bFirst = pOrig->aTerm[i].bFirst;
248170 sCtx.pPhrase = sqlite3Fts5MallocZero(&rc, SZ_FTS5EXPRPHRASE(1));
248174 if( rc==SQLITE_OK && ALWAYS(sCtx.pPhrase) ){
248179 pNew->apExprPhrase[0] = sCtx.pPhrase;
248180 pNew->pRoot->pNear->apPhrase[0] = sCtx.pPhrase;
248182 sCtx.pPhrase->pNode = pNew->pRoot;
248196 fts5ExprPhraseFree(sCtx.pPhrase);
248538 Fts5ExprPhrase *pPhrase = (Fts5ExprPhrase*)sqlite3Fts5MallocZero( local
248541 if( pPhrase ){
248543 fts5ExprPhraseFree(pPhrase);
248546 Fts5ExprTerm *pTo = &pPhrase->aTerm[0];
248547 pParse->apPhrase[pParse->nPhrase++] = pPhrase;
248548 pPhrase->nTerm = 1;
248553 0, 0, sqlite3Fts5ParseNearset(pParse, 0, pPhrase)
248626 Fts5ExprPhrase *pPhrase = pNear->apPhrase[0]; local
248628 || pPhrase->nTerm>1
248629 || (pPhrase->nTerm>0 && pPhrase->aTerm[0].bFirst)
248827 Fts5ExprPhrase *pPhrase = pNear->apPhrase[i]; local
248830 for(iTerm=0; zRet && iTerm<pPhrase->nTerm; iTerm++){
248831 Fts5ExprTerm *p = &pPhrase->aTerm[iTerm];
248835 if( pPhrase->aTerm[iTerm].bPrefix ){
248904 Fts5ExprPhrase *pPhrase = pNear->apPhrase[i]; local
248909 for(iTerm=0; iTerm<pPhrase->nTerm; iTerm++){
248910 char *zTerm = fts5ExprTermPrint(&pPhrase->aTerm[iTerm]);
249168 Fts5ExprPhrase *pPhrase = pExpr->apExprPhrase[iPhrase]; local
249169 Fts5ExprNode *pNode = pPhrase->pNode;
249171 *pa = pPhrase->poslist.p;
249172 nRet = pPhrase->poslist.n;
249391 Fts5ExprPhrase *pPhrase = pExpr->apExprPhrase[iPhrase]; local
249392 Fts5ExprNode *pNode = pPhrase->pNode;
249400 && pPhrase->poslist.n>0
249402 Fts5ExprTerm *pTerm = &pPhrase->aTerm[0];
249409 *ppCollist = pPhrase->aTerm[0].pIter->pData;
249410 *pnCollist = pPhrase->aTerm[0].pIter->nData;
249430 Fts5ExprPhrase *pPhrase = 0; local
249435 pPhrase = pExpr->apExprPhrase[iPhrase];
249436 if( iToken<0 || iToken>=pPhrase->nTerm ){
249440 *ppOut = pPhrase->aTerm[iToken].pTerm;
249441 *pnOut = pPhrase->aTerm[iToken].nFullTerm;
249458 Fts5ExprPhrase *pPhrase = 0; local
249465 pPhrase = pExpr->apExprPhrase[iPhrase];
249466 if( iToken<0 || iToken>=pPhrase->nTerm ){
249469 pTerm = &pPhrase->aTerm[iToken];