Lines Matching refs:pConfig

235842 static int sqlite3Fts5ConfigDeclareVtab(Fts5Config *pConfig);
235845 Fts5Config *pConfig, /* FTS5 Configuration object */
235862 static void sqlite3Fts5ConfigErrmsg(Fts5Config *pConfig, const char *zFmt, ...);
235998 static int sqlite3Fts5IndexOpen(Fts5Config *pConfig, int bCreate, Fts5Index**, char**);
236196 Fts5Config *pConfig; /* Virtual table configuration */
236200 static int sqlite3Fts5LoadTokenizer(Fts5Config *pConfig);
236206 static void sqlite3Fts5ClearLocale(Fts5Config *pConfig);
236207 static void sqlite3Fts5SetLocale(Fts5Config *pConfig, const char *pLoc, int nLoc);
236209 static int sqlite3Fts5IsLocaleValue(Fts5Config *pConfig, sqlite3_value *pVal);
236344 Fts5Config *pConfig,
236352 Fts5Config *pConfig,
239494 Fts5Config *pConfig, /* Configuration object to update */
239506 if( pConfig->aPrefix==0 ){
239507 pConfig->aPrefix = sqlite3Fts5MallocZero(&rc, nByte);
239528 if( pConfig->nPrefix==FTS5_MAX_PREFIX_INDEXES ){
239547 pConfig->aPrefix[pConfig->nPrefix] = nPre;
239548 pConfig->nPrefix++;
239551 assert( pConfig->nPrefix<=FTS5_MAX_PREFIX_INDEXES );
239562 if( pConfig->t.azArg ){
239585 pConfig->t.azArg = (const char**)azArg;
239586 pConfig->t.nArg = nArg;
239597 if( pConfig->eContent!=FTS5_CONTENT_NORMAL ){
239602 pConfig->eContent = FTS5_CONTENT_EXTERNAL;
239603 pConfig->zContent = sqlite3Fts5Mprintf(&rc, "%Q.%Q", pConfig->zDb,zArg);
239605 pConfig->eContent = FTS5_CONTENT_NONE;
239616 pConfig->bContentlessDelete = (zArg[0]=='1');
239626 pConfig->bContentlessUnindexed = (zArg[0]=='1');
239632 if( pConfig->zContentRowid ){
239636 pConfig->zContentRowid = sqlite3Fts5Strndup(&rc, zArg, -1);
239646 pConfig->bColumnsize = (zArg[0]=='1');
239656 pConfig->bLocale = (zArg[0]=='1');
239669 if( (rc = fts5ConfigSetEnum(aDetail, zArg, &pConfig->eDetail)) ){
239680 pConfig->bTokendata = (zArg[0]=='1');
239980 static void sqlite3Fts5ConfigFree(Fts5Config *pConfig){
239981 if( pConfig ){
239983 if( pConfig->t.pTok ){
239984 if( pConfig->t.pApi1 ){
239985 pConfig->t.pApi1->xDelete(pConfig->t.pTok);
239987 pConfig->t.pApi2->xDelete(pConfig->t.pTok);
239990 sqlite3_free((char*)pConfig->t.azArg);
239991 sqlite3_free(pConfig->zDb);
239992 sqlite3_free(pConfig->zName);
239993 for(i=0; i<pConfig->nCol; i++){
239994 sqlite3_free(pConfig->azCol[i]);
239996 sqlite3_free(pConfig->azCol);
239997 sqlite3_free(pConfig->aPrefix);
239998 sqlite3_free(pConfig->zRank);
239999 sqlite3_free(pConfig->zRankArgs);
240000 sqlite3_free(pConfig->zContent);
240001 sqlite3_free(pConfig->zContentRowid);
240002 sqlite3_free(pConfig->zContentExprlist);
240003 sqlite3_free(pConfig);
240012 static int sqlite3Fts5ConfigDeclareVtab(Fts5Config *pConfig){
240018 for(i=0; zSql && i<pConfig->nCol; i++){
240020 zSql = sqlite3Fts5Mprintf(&rc, "%z%s%Q", zSql, zSep, pConfig->azCol[i]);
240023 zSql, pConfig->zName, FTS5_RANK_NAME
240028 rc = sqlite3_declare_vtab(pConfig->db, zSql);
240059 Fts5Config *pConfig, /* FTS5 Configuration object */
240067 if( pConfig->t.pTok==0 ){
240068 rc = sqlite3Fts5LoadTokenizer(pConfig);
240071 if( pConfig->t.pApi1 ){
240072 rc = pConfig->t.pApi1->xTokenize(
240073 pConfig->t.pTok, pCtx, flags, pText, nText, xToken
240076 rc = pConfig->t.pApi2->xTokenize(pConfig->t.pTok, pCtx, flags,
240077 pText, nText, pConfig->t.pLocale, pConfig->t.nLocale, xToken
240178 Fts5Config *pConfig,
240193 pConfig->pgsz = pgsz;
240205 pConfig->nHashSize = nHashSize;
240218 pConfig->nAutomerge = nAutomerge;
240230 pConfig->nUsermerge = nUsermerge;
240244 pConfig->nCrisisMerge = nCrisisMerge;
240257 pConfig->nDeleteMerge = nVal;
240266 sqlite3_free(pConfig->zRank);
240267 sqlite3_free(pConfig->zRankArgs);
240268 pConfig->zRank = zRank;
240269 pConfig->zRankArgs = zRankArgs;
240284 pConfig->bSecureDelete = (bVal ? 1 : 0);
240296 pConfig->bPrefixInsttoken = (bVal ? 1 : 0);
240308 static int sqlite3Fts5ConfigLoad(Fts5Config *pConfig, int iCookie){
240316 pConfig->pgsz = FTS5_DEFAULT_PAGE_SIZE;
240317 pConfig->nAutomerge = FTS5_DEFAULT_AUTOMERGE;
240318 pConfig->nUsermerge = FTS5_DEFAULT_USERMERGE;
240319 pConfig->nCrisisMerge = FTS5_DEFAULT_CRISISMERGE;
240320 pConfig->nHashSize = FTS5_DEFAULT_HASHSIZE;
240321 pConfig->nDeleteMerge = FTS5_DEFAULT_DELETE_AUTOMERGE;
240323 zSql = sqlite3Fts5Mprintf(&rc, zSelect, pConfig->zDb, pConfig->zName);
240325 rc = sqlite3_prepare_v2(pConfig->db, zSql, -1, &p, 0);
240338 sqlite3Fts5ConfigSetValue(pConfig, zK, pVal, &bDummy);
240349 sqlite3Fts5ConfigErrmsg(pConfig, "invalid fts5 file format "
240354 pConfig->iVersion = iVersion;
240358 pConfig->iCookie = iCookie;
240368 static void sqlite3Fts5ConfigErrmsg(Fts5Config *pConfig, const char *zFmt, ...){
240374 if( pConfig->pzErrmsg ){
240375 assert( *pConfig->pzErrmsg==0 );
240376 *pConfig->pzErrmsg = zMsg;
240433 Fts5Config *pConfig;
240537 Fts5Config *pConfig;
240657 Fts5Config *pConfig, /* FTS5 Configuration */
240677 sParse.pConfig = pConfig;
240690 if( sParse.rc==SQLITE_OK && iCol<pConfig->nCol ){
240709 pNew->pConfig = pConfig;
240750 Fts5Config *pConfig, int bGlob, int iCol, const char *zText, Fts5Expr **pp
240800 if( pConfig->eDetail!=FTS5_DETAIL_FULL ){
240802 if( pConfig->eDetail==FTS5_DETAIL_NONE ){
240803 iCol = pConfig->nCol;
240807 rc = sqlite3Fts5ExprNew(pConfig, bAnd, iCol, zExpr, pp,pConfig->pzErrmsg);
241291 if( pExpr->pConfig->eDetail!=FTS5_DETAIL_FULL ){
241631 if( pExpr->pConfig->eDetail==FTS5_DETAIL_FULL ){
242101 Fts5Config *pConfig;
242137 if( pCtx->pConfig->bTokendata ){
242167 if( pCtx->pConfig->bTokendata && rc==SQLITE_OK ){
242229 Fts5Config *pConfig = pParse->pConfig;
242236 sCtx.pConfig = pConfig;
242244 rc = sqlite3Fts5Tokenize(pConfig, flags, z, n, &sCtx, fts5ParseTokenize);
242322 sCtx.pConfig = pExpr->pConfig;
242345 pNew->pConfig = pExpr->pConfig;
242431 assert( iCol>=0 && iCol<pParse->pConfig->nCol );
242465 int nCol = pParse->pConfig->nCol;
242497 Fts5Config *pConfig = pParse->pConfig;
242499 for(iCol=0; iCol<pConfig->nCol; iCol++){
242500 if( 0==sqlite3_stricmp(pConfig->azCol[iCol], z) ) break;
242502 if( iCol==pConfig->nCol ){
242613 if( pParse->pConfig->eDetail==FTS5_DETAIL_NONE ){
242793 if( pParse->pConfig->eDetail!=FTS5_DETAIL_FULL ){
242959 Fts5Config *pConfig,
243028 char *z = fts5ExprPrintTcl(pConfig, zNearsetCmd, pExpr->apChild[i]);
243041 static char *fts5ExprPrint(Fts5Config *pConfig, Fts5ExprNode *pExpr){
243057 pConfig->azCol[pColset->aiCol[ii]], ii==pColset->nCol-1 ? "" : " "
243109 char *z = fts5ExprPrint(pConfig, pExpr->apChild[i]);
243149 Fts5Config *pConfig = 0;
243183 rc = sqlite3Fts5ConfigParse(pGlobal, db, nConfig, azConfig, &pConfig, &zErr);
243185 rc = sqlite3Fts5ExprNew(pConfig, 0, pConfig->nCol, zExpr, &pExpr, &zErr);
243192 zText = fts5ExprPrintTcl(pConfig, zNearsetCmd, pExpr->pRoot);
243194 zText = fts5ExprPrint(pConfig, pExpr->pRoot);
243213 sqlite3Fts5ConfigFree(pConfig);
243431 if( pExpr->pConfig->bTokendata ){
243445 if( rc==SQLITE_OK && (pExpr->pConfig->bTokendata || pT->bPrefix) ){
243461 Fts5Config *pConfig,
243485 return sqlite3Fts5Tokenize(pConfig,
243564 assert( pExpr->pConfig->eDetail==FTS5_DETAIL_COLUMNS );
243638 if( pExpr->pConfig->bTokendata || pTerm->bPrefix ){
243753 static int sqlite3Fts5HashNew(Fts5Config *pConfig, Fts5Hash **ppNew, int *pnByte){
243764 pNew->eDetail = pConfig->eDetail;
244600 Fts5Config *pConfig; /* Virtual table configuration */
245089 Fts5Config *pConfig = p->pConfig;
245090 rc = sqlite3_blob_open(pConfig->db,
245091 pConfig->zDb, p->zDataTbl, "block", iRowid, 0, &p->pReader
245165 int rc = sqlite3_prepare_v3(p->pConfig->db, zSql, -1,
245188 Fts5Config *pConfig = p->pConfig;
245191 pConfig->zDb, pConfig->zName
245212 Fts5Config *pConfig = p->pConfig;
245215 pConfig->zDb, pConfig->zName
245241 Fts5Config *pConfig = p->pConfig;
245244 pConfig->zDb, pConfig->zName
245500 Fts5Config *pConfig = p->pConfig;
245509 if( p->rc==SQLITE_OK && (pConfig->pgsz==0 || pConfig->iCookie!=iCookie) ){
245510 p->rc = sqlite3Fts5ConfigLoad(pConfig, iCookie);
245528 sqlite3_mprintf("PRAGMA %Q.data_version", p->pConfig->zDb)
245646 iCookie = p->pConfig->iCookie;
246100 if( p->pConfig->eDetail==FTS5_DETAIL_NONE ){
246194 }else if( p->pConfig->eDetail==FTS5_DETAIL_NONE ){
246281 int eDetail = p->pConfig->eDetail;
246417 if( p->pConfig->eDetail!=FTS5_DETAIL_NONE ){
246442 assert( p->pConfig->eDetail==FTS5_DETAIL_NONE );
246519 assert( p->pConfig->eDetail!=FTS5_DETAIL_NONE );
246642 if( pDlidx && p->pConfig->iVersion==FTS5_CURRENT_VERSION ){
246888 Fts5Config *pConfig = p->pConfig;
246892 pConfig->zDb, pConfig->zName
246989 Fts5Config *pConfig = p->pConfig;
246993 pConfig->zDb, pConfig->zName
247809 assert( p->pConfig->eDetail!=FTS5_DETAIL_NONE );
247860 if( p->pConfig->eDetail==FTS5_DETAIL_FULL ){
247951 assert( pIter->pIndex->pConfig->eDetail==FTS5_DETAIL_NONE );
247964 assert( pIter->pIndex->pConfig->eDetail!=FTS5_DETAIL_NONE );
248015 assert( pIter->pIndex->pConfig->eDetail==FTS5_DETAIL_COLUMNS );
248057 assert( pIter->pIndex->pConfig->eDetail==FTS5_DETAIL_FULL );
248081 Fts5Config *pConfig = pIter->pIndex->pConfig;
248082 if( pConfig->eDetail==FTS5_DETAIL_NONE ){
248094 else if( pConfig->eDetail==FTS5_DETAIL_FULL ){
248099 assert( pConfig->eDetail==FTS5_DETAIL_COLUMNS );
248100 if( pConfig->nCol<=100 ){
248102 sqlite3Fts5BufferSize(pRc, &pIter->poslist, pConfig->nCol);
248577 if( pDlidx->buf.n>=p->pConfig->pgsz ){
248686 if( (pPage->buf.n + pPgidx->n + nTerm + 2)>=p->pConfig->pgsz ){
248760 if( (pPage->buf.n + pPage->pgidx.n)>=p->pConfig->pgsz ){
248797 assert( p->pConfig->pgsz>0 || p->rc!=SQLITE_OK );
248799 && (pPage->buf.n + pPage->pgidx.n + n)>=p->pConfig->pgsz
248801 int nReq = p->pConfig->pgsz - pPage->buf.n - pPage->pgidx.n;
248854 const int nBuffer = p->pConfig->pgsz + FTS5_DATA_PADDING;
248872 Fts5Config *pConfig = p->pConfig;
248875 pConfig->zDb, pConfig->zName
248990 int eDetail = p->pConfig->eDetail;
249137 Fts5Config *pConfig = p->pConfig;
249139 if( pConfig->bContentlessDelete && pConfig->nDeleteMerge>0 ){
249155 if( nPercent>=pConfig->nDeleteMerge && nPercent>nBest ){
249236 if( p->rc==SQLITE_OK && p->pConfig->nAutomerge>0 && ALWAYS((*ppStruct)!=0) ){
249248 fts5IndexMerge(p, ppStruct, nRem, p->pConfig->nAutomerge);
249256 const int nCrisis = p->pConfig->nCrisisMerge;
249326 assert( p->pConfig->iVersion==FTS5_CURRENT_VERSION_SECUREDELETE );
249330 p->pConfig->zDb, p->pConfig->zName
249358 const int bDetailNone = (p->pConfig->eDetail==FTS5_DETAIL_NONE);
249454 const int bDetailNone = (p->pConfig->eDetail==FTS5_DETAIL_NONE);
249756 if( p->pConfig->iVersion!=FTS5_CURRENT_VERSION_SECUREDELETE ){
249757 Fts5Config *pConfig = p->pConfig;
249761 pConfig->zDb, pConfig->zName, FTS5_CURRENT_VERSION_SECUREDELETE
249768 pConfig->iCookie++;
249769 pConfig->iVersion = FTS5_CURRENT_VERSION_SECUREDELETE;
249815 const int pgsz = p->pConfig->pgsz;
249816 int eDetail = p->pConfig->eDetail;
249817 int bSecureDelete = p->pConfig->bSecureDelete;
250142 int nMin = p->pConfig->nUsermerge;
250908 && p->pConfig->eDetail==FTS5_DETAIL_FULL
250909 && p->pConfig->bPrefixInsttoken
250915 if( p->pConfig->eDetail==FTS5_DETAIL_NONE ){
250992 p->rc = sqlite3Fts5HashNew(p->pConfig, &p->pHash, &p->nPendingData);
250998 || (p->nPendingData > p->pConfig->nHashSize)
251046 if( p->pConfig->bContentlessDelete ){
251062 Fts5Config *pConfig,
251072 p->pConfig = pConfig;
251074 p->zDataTbl = sqlite3Fts5Mprintf(&rc, "%s_data", pConfig->zName);
251077 pConfig, "data", "id INTEGER PRIMARY KEY, block BLOB", 0, pzErr
251080 rc = sqlite3Fts5CreateTable(pConfig, "idx",
251184 Fts5Config *pConfig = p->pConfig;
251194 for(i=0; i<pConfig->nPrefix && rc==SQLITE_OK; i++){
251195 const int nChar = pConfig->aPrefix[i];
251315 int eDetail = pIter->pIndex->pConfig->eDetail;
251600 Fts5Config *pConfig = p->pConfig;
251610 int bTokendata = pConfig->bTokendata;
251634 if( pConfig->bPrefixIndex==0 || (flags & FTS5INDEX_QUERY_TEST_NOIDX) ){
251636 iIdx = 1+pConfig->nPrefix;
251641 for(iIdx=1; iIdx<=pConfig->nPrefix; iIdx++){
251642 int nIdxChar = pConfig->aPrefix[iIdx-1];
251651 }else if( iIdx<=pConfig->nPrefix ){
251878 && (pIter->nSeg==0 || pIter->pIndex->pConfig->eDetail!=FTS5_DETAIL_FULL)
251901 assert( p->pConfig->eDetail!=FTS5_DETAIL_FULL );
251945 int nCol = p->pConfig->nCol;
251991 Fts5Config *pConfig = p->pConfig; /* Configuration object */
251998 rc = sqlite3_blob_open(pConfig->db, pConfig->zDb, p->zDataTbl,
252187 int nSlotPerPage = MAX(MINSLOT, (p->pConfig->pgsz - 8) / szKey);
252437 int eDetail = p->pConfig->eDetail;
252662 Fts5Config *pConfig = p->pConfig;
252663 int bSecureDelete = (pConfig->iVersion==FTS5_CURRENT_VERSION_SECUREDELETE);
252674 pConfig->zDb, pConfig->zName, pSeg->iSegid
252701 && pConfig->iVersion==FTS5_CURRENT_VERSION_SECUREDELETE
252820 int eDetail = p->pConfig->eDetail;
253823 #define FTS5_LOCALE_HDR(pConfig) ((const u8*)(pConfig->pGlobal->aLocaleHdr))
254072 int eContent = pTab->p.pConfig->eContent;
254086 sqlite3Fts5ConfigFree(pTab->p.pConfig);
254104 int rc = sqlite3Fts5DropAll(pTab->pConfig);
254134 Fts5Config *pConfig = 0; /* Results of parsing argc/argv */
254140 rc = sqlite3Fts5ConfigParse(pGlobal, db, argc, azConfig, &pConfig, pzErr);
254141 assert( (rc==SQLITE_OK && *pzErr==0) || pConfig==0 );
254144 pConfig->pzErrmsg = pzErr;
254145 pTab->p.pConfig = pConfig;
254147 if( bCreate || sqlite3Fts5TokenizerPreload(&pConfig->t) ){
254148 rc = sqlite3Fts5LoadTokenizer(pConfig);
254154 rc = sqlite3Fts5IndexOpen(pConfig, bCreate, &pTab->p.pIndex, pzErr);
254160 pConfig, pTab->p.pIndex, bCreate, &pTab->pStorage, pzErr
254166 rc = sqlite3Fts5ConfigDeclareVtab(pConfig);
254171 rc = sqlite3Fts5ConfigLoad(pTab->p.pConfig, pTab->p.pConfig->iCookie-1);
254174 if( rc==SQLITE_OK && pConfig->eContent==FTS5_CONTENT_NORMAL ){
254181 if( pConfig ) pConfig->pzErrmsg = 0;
254244 Fts5Config *pConfig,
254249 if( pConfig->t.ePattern==FTS5_PATTERN_GLOB && p->op==FTS5_PATTERN_GLOB ){
254252 if( pConfig->t.ePattern==FTS5_PATTERN_LIKE
254323 Fts5Config *pConfig = pTab->pConfig;
254324 const int nCol = pConfig->nCol;
254345 if( pConfig->bLock ){
254385 if( iCol>=0 && iCol<nCol && fts5UsePatternMatch(pConfig, p) ){
254429 if( iSort==(pConfig->nCol+1) && nSeenMatch>0 ){
254431 }else if( iSort==-1 && (!pInfo->aOrderBy[0].desc || !pConfig->bTokendata) ){
254474 Fts5Config *pConfig = pTab->p.pConfig;
254481 nByte = sizeof(Fts5Cursor) + pConfig->nCol * sizeof(int);
254691 && ((Fts5Table*)pCursor->pVtab)->pConfig->bTokendata
254716 Fts5Config *pConfig = ((Fts5Table*)pCursor->pVtab)->pConfig;
254717 pConfig->bLock++;
254719 pConfig->bLock--;
254725 "%s", sqlite3_errmsg(pConfig->db)
254743 Fts5Config *pConfig,
254757 rc = sqlite3_prepare_v3(pConfig->db, zSql, -1,
254760 sqlite3Fts5ConfigErrmsg(pConfig, "%s", sqlite3_errmsg(pConfig->db));
254775 Fts5Config *pConfig = pTab->p.pConfig;
254797 rc = fts5PrepareStatement(&pSorter->pStmt, pConfig,
254799 pConfig->zDb, pConfig->zName, zRank, pConfig->zName,
254888 Fts5Config *pConfig = pTab->p.pConfig;
254898 rc = sqlite3_prepare_v3(pConfig->db, zSql, -1,
254938 Fts5Config *pConfig,
254963 if( pConfig->zRank ){
254964 pCsr->zRank = (char*)pConfig->zRank;
254965 pCsr->zRankArgs = (char*)pConfig->zRankArgs;
255002 Fts5Config *pConfig,
255006 Fts5TokenizerConfig *pT = &pConfig->t;
255014 static void sqlite3Fts5ClearLocale(Fts5Config *pConfig){
255015 sqlite3Fts5SetLocale(pConfig, 0, 0);
255022 static int sqlite3Fts5IsLocaleValue(Fts5Config *pConfig, sqlite3_value *pVal){
255034 && 0==memcmp(pBlob, FTS5_LOCALE_HDR(pConfig), FTS5_LOCALE_HDR_SIZE)
255096 Fts5Config *pConfig, /* Fts5 configuration */
255103 if( sqlite3Fts5IsLocaleValue(pConfig, pVal) ){
255111 sqlite3Fts5SetLocale(pConfig, pLoc, nLoc);
255142 Fts5Config *pConfig = pTab->p.pConfig;
255152 char **pzErrmsg = pConfig->pzErrmsg;
255153 int bPrefixInsttoken = pConfig->bPrefixInsttoken;
255158 assert( pConfig->bLock==0 );
255173 pConfig->pzErrmsg = &pTab->p.base.zErrMsg;
255186 rc = fts5ExtractExprText(pConfig, apVal[i], &zText, &bFreeAndReset);
255190 pConfig->bPrefixInsttoken = 1;
255207 rc = sqlite3Fts5ExprNew(pConfig, 0, iCol, zText, &pExpr, pzErr);
255216 sqlite3Fts5ClearLocale(pConfig);
255233 rc = sqlite3Fts5ExprPattern(pConfig, bGlob, iCol, zText, &pExpr);
255297 rc = fts5CursorParseRank(pConfig, pCsr, pRank);
255307 }else if( pConfig->zContent==0 ){
255308 fts5SetVtabError(pTab,"%s: table does not support scanning",pConfig->zName);
255331 pConfig->pzErrmsg = pzErrmsg;
255332 pConfig->bPrefixInsttoken = bPrefixInsttoken;
255411 pTab->pConfig->bLock++;
255413 pTab->pConfig->bLock--;
255424 pTab->pConfig->zContent
255426 }else if( pTab->pConfig->pzErrmsg ){
255428 "%s", sqlite3_errmsg(pTab->pConfig->db)
255456 Fts5Config *pConfig = pTab->p.pConfig;
255462 if( pConfig->eContent==FTS5_CONTENT_NORMAL ){
255492 pConfig->bPrefixIndex = sqlite3_value_int(pVal);
255502 rc = sqlite3Fts5ConfigSetValue(pTab->p.pConfig, zCmd, pVal, &bError);
255514 pTab->p.pConfig->iCookie--;
255574 Fts5Config *pConfig,
255584 for(ii=0; ii<pConfig->nCol; ii++){
255585 if( pConfig->abUnindexed[ii]==0 ){
255597 if( bSeenIndexNC || pConfig->bContentlessDelete==0 ){
255599 sqlite3Fts5ConfigErrmsg(pConfig,
255600 (pConfig->bContentlessDelete ?
255603 , "cannot UPDATE", pConfig->zName
255632 Fts5Config *pConfig = pTab->p.pConfig;
255640 assert( nArg==1 || nArg==(2+pConfig->nCol+2) );
255644 assert( pTab->p.pConfig->pzErrmsg==0 );
255645 if( pConfig->pgsz==0 ){
255646 rc = sqlite3Fts5ConfigLoad(pTab->p.pConfig, pTab->p.pConfig->iCookie);
255650 pTab->p.pConfig->pzErrmsg = &pTab->p.base.zErrMsg;
255657 && sqlite3_value_type(apVal[2+pConfig->nCol])!=SQLITE_NULL
255660 const char *z = (const char*)sqlite3_value_text(apVal[2+pConfig->nCol]);
255661 if( pConfig->eContent!=FTS5_CONTENT_NORMAL
255664 if( pConfig->bContentlessDelete ){
255673 rc = fts5SpecialInsert(pTab, z, apVal[2 + pConfig->nCol + 1]);
255688 if( pConfig->eContent==FTS5_CONTENT_NORMAL || pConfig->bContentlessDelete ){
255689 eConflict = sqlite3_vtab_on_conflict(pConfig->db);
255699 if( fts5IsContentless(pTab, 1) && pConfig->bContentlessDelete==0 ){
255701 "cannot DELETE from contentless fts5 table: %s", pConfig->zName
255716 if( pConfig->bLocale==0 ){
255718 for(ii=0; ii<pConfig->nCol; ii++){
255720 if( sqlite3Fts5IsLocaleValue(pConfig, pVal) ){
255748 rc = fts5ContentlessUpdate(pConfig, &apVal[2], iOld!=iNew, &bContent);
255793 pTab->p.pConfig->pzErrmsg = 0;
255804 pTab->p.pConfig->pzErrmsg = &pTab->p.base.zErrMsg;
255806 pTab->p.pConfig->pzErrmsg = 0;
255841 pTab->p.pConfig->pgsz = 0;
255854 return ((Fts5Table*)(pCsr->base.pVtab))->pConfig->nCol;
255887 sqlite3Fts5SetLocale(pTab->pConfig, pLoc, nLoc);
255888 rc = sqlite3Fts5Tokenize(pTab->pConfig,
255891 sqlite3Fts5SetLocale(pTab->pConfig, 0, 0);
255934 Fts5Config *pConfig,
255945 if( pConfig->bLocale
255946 && pConfig->eContent==FTS5_CONTENT_EXTERNAL
255947 && sqlite3Fts5IsLocaleValue(pConfig, pVal)
255953 if( pConfig->bLocale && pConfig->eContent==FTS5_CONTENT_NORMAL ){
255954 pLoc = (const char*)sqlite3_column_text(pStmt, iCol+1+pConfig->nCol);
255955 nLoc = sqlite3_column_bytes(pStmt, iCol+1+pConfig->nCol);
255958 sqlite3Fts5SetLocale(pConfig, pLoc, nLoc);
255973 if( iCol<0 || iCol>=pTab->pConfig->nCol ){
255981 rc = fts5TextFromStmt(pTab->pConfig, pCsr->pStmt, iCol, pz, pn);
255982 sqlite3Fts5ClearLocale(pTab->pConfig);
256001 Fts5Config *pConfig = ((Fts5Table*)(pCsr->base.pVtab))->pConfig;
256007 }else if( pConfig->eDetail!=FTS5_DETAIL_FULL
256014 if( pConfig->eDetail!=FTS5_DETAIL_FULL ){
256023 for(i=0; i<pConfig->nCol && rc==SQLITE_OK; i++){
256026 rc = fts5TextFromStmt(pConfig, pCsr->pStmt, i, &z, &n);
256029 pConfig, pCsr->pExpr, aPopulator, i, z, n
256032 sqlite3Fts5ClearLocale(pConfig);
256044 if( pCsr->pSorter && pConfig->eDetail==FTS5_DETAIL_FULL ){
256069 int nCol = ((Fts5Table*)pCsr->base.pVtab)->pConfig->nCol;
256197 Fts5Config *pConfig = pTab->p.pConfig;
256201 if( pConfig->bColumnsize ){
256204 }else if( !pConfig->zContent || pConfig->eContent==FTS5_CONTENT_UNINDEXED ){
256206 for(i=0; i<pConfig->nCol; i++){
256207 if( pConfig->abUnindexed[i]==0 ){
256214 for(i=0; rc==SQLITE_OK && i<pConfig->nCol; i++){
256215 if( pConfig->abUnindexed[i]==0 ){
256219 rc = fts5TextFromStmt(pConfig, pCsr->pStmt, i, &z, &n);
256221 rc = sqlite3Fts5Tokenize(pConfig, FTS5_TOKENIZE_AUX,
256225 sqlite3Fts5ClearLocale(pConfig);
256234 for(i=0; i<pConfig->nCol; i++){
256237 }else if( iCol<pConfig->nCol ){
256319 int nCol = ((Fts5Table*)(((Fts5Cursor*)pCtx)->base.pVtab))->pConfig->nCol;
256354 Fts5Config *pConfig = ((Fts5Table*)(pCsr->base.pVtab))->pConfig;
256356 if( pConfig->eDetail==FTS5_DETAIL_COLUMNS ){
256386 Fts5Config *pConfig = ((Fts5Table*)(pCsr->base.pVtab))->pConfig;
256388 if( pConfig->eDetail==FTS5_DETAIL_COLUMNS ){
256482 Fts5Config *pConfig = ((Fts5Table*)(pCsr->base.pVtab))->pConfig;
256488 if( iCol<0 || iCol>=pConfig->nCol ){
256491 pConfig->abUnindexed[iCol]==0
256493 && pConfig->bLocale
256499 rc = fts5TextFromStmt(pConfig, pCsr->pStmt, iCol, &zDummy, &nDummy);
256501 *pzLocale = pConfig->t.pLocale;
256502 *pnLocale = pConfig->t.nLocale;
256504 sqlite3Fts5ClearLocale(pConfig);
256679 switch( ((Fts5Table*)(pCsr->base.pVtab))->pConfig->eDetail ){
256735 Fts5Config *pConfig = pTab->p.pConfig;
256742 if( iCol==pConfig->nCol ){
256747 if( iCol==pConfig->nCol ){
256753 }else if( iCol==pConfig->nCol+1 ){
256767 if( !sqlite3_vtab_nochange(pCtx) && pConfig->eContent!=FTS5_CONTENT_NONE ){
256768 pConfig->pzErrmsg = &pTab->p.base.zErrMsg;
256772 if( pConfig->bLocale
256773 && pConfig->eContent==FTS5_CONTENT_EXTERNAL
256774 && sqlite3Fts5IsLocaleValue(pConfig, pVal)
256778 rc = fts5TextFromStmt(pConfig, pCsr->pStmt, iCol, &z, &n);
256782 sqlite3Fts5ClearLocale(pConfig);
256788 pConfig->pzErrmsg = 0;
256886 pTab->p.pConfig->pgsz = 0;
257212 static int sqlite3Fts5LoadTokenizer(Fts5Config *pConfig){
257213 const char **azArg = pConfig->t.azArg;
257214 const int nArg = pConfig->t.nArg;
257218 pMod = fts5LocateTokenizer(pConfig->pGlobal, nArg==0 ? 0 : azArg[0]);
257222 sqlite3Fts5ConfigErrmsg(pConfig, "no such tokenizer: %s", azArg[0]);
257227 pConfig->t.pApi2 = &pMod->x2;
257229 pConfig->t.pApi1 = &pMod->x1;
257234 (azArg?&azArg[1]:0), (nArg?nArg-1:0), &pConfig->t.pTok
257239 sqlite3Fts5ConfigErrmsg(pConfig, "error in tokenizer constructor");
257242 pConfig->t.ePattern = sqlite3Fts5TokenizerPattern(
257243 pMod->x1.xCreate, pConfig->t.pTok
257249 pConfig->t.pApi1 = 0;
257250 pConfig->t.pApi2 = 0;
257251 pConfig->t.pTok = 0;
257420 assert( pTab->p.pConfig->pzErrmsg==0 );
257421 pTab->p.pConfig->pzErrmsg = pzErr;
257436 pTab->p.pConfig->pzErrmsg = 0;
257629 Fts5Config *pConfig;
257675 assert( p->pConfig->bColumnsize || (
257700 Fts5Config *pC = p->pConfig;
257784 p->pConfig->bLock++;
257786 p->pConfig->bLock--;
257833 static int sqlite3Fts5DropAll(Fts5Config *pConfig){
257834 int rc = fts5ExecPrintf(pConfig->db, 0,
257838 pConfig->zDb, pConfig->zName,
257839 pConfig->zDb, pConfig->zName,
257840 pConfig->zDb, pConfig->zName
257842 if( rc==SQLITE_OK && pConfig->bColumnsize ){
257843 rc = fts5ExecPrintf(pConfig->db, 0,
257845 pConfig->zDb, pConfig->zName
257848 if( rc==SQLITE_OK && pConfig->eContent==FTS5_CONTENT_NORMAL ){
257849 rc = fts5ExecPrintf(pConfig->db, 0,
257851 pConfig->zDb, pConfig->zName
257858 Fts5Config *pConfig, /* Current FTS5 configuration */
257864 *pRc = fts5ExecPrintf(pConfig->db, 0,
257866 pConfig->zDb, pConfig->zName, zTail, zName, zTail
257872 Fts5Config *pConfig = pStorage->pConfig;
257875 fts5StorageRenameOne(pConfig, &rc, "data", zName);
257876 fts5StorageRenameOne(pConfig, &rc, "idx", zName);
257877 fts5StorageRenameOne(pConfig, &rc, "config", zName);
257878 if( pConfig->bColumnsize ){
257879 fts5StorageRenameOne(pConfig, &rc, "docsize", zName);
257881 if( pConfig->eContent==FTS5_CONTENT_NORMAL ){
257882 fts5StorageRenameOne(pConfig, &rc, "content", zName);
257892 Fts5Config *pConfig, /* FTS5 configuration */
257901 rc = fts5ExecPrintf(pConfig->db, &zErr, "CREATE TABLE %Q.'%q_%q'(%s)%s",
257902 pConfig->zDb, pConfig->zName, zPost, zDefn,
257911 pConfig->zName, zPost, zErr
257927 Fts5Config *pConfig,
257938 + pConfig->nCol * sizeof(i64); /* Fts5Storage.aTotalSize[] */
257944 p->pConfig = pConfig;
257948 if( pConfig->eContent==FTS5_CONTENT_NORMAL
257949 || pConfig->eContent==FTS5_CONTENT_UNINDEXED
257951 int nDefn = 32 + pConfig->nCol*10;
257952 char *zDefn = sqlite3_malloc64(32 + (sqlite3_int64)pConfig->nCol * 20);
257960 for(i=0; i<pConfig->nCol; i++){
257961 if( pConfig->eContent==FTS5_CONTENT_NORMAL
257962 || pConfig->abUnindexed[i]
257968 if( pConfig->bLocale ){
257969 for(i=0; i<pConfig->nCol; i++){
257970 if( pConfig->abUnindexed[i]==0 ){
257976 rc = sqlite3Fts5CreateTable(pConfig, "content", zDefn, 0, pzErr);
257981 if( rc==SQLITE_OK && pConfig->bColumnsize ){
257983 if( pConfig->bContentlessDelete ){
257986 rc = sqlite3Fts5CreateTable(pConfig, "docsize", zCols, 0, pzErr);
257990 pConfig, "config", "k PRIMARY KEY, v", 1, pzErr
258095 Fts5Config *pConfig = p->pConfig;
258122 for(iCol=1; rc==SQLITE_OK && iCol<=pConfig->nCol; iCol++){
258123 if( pConfig->abUnindexed[iCol-1]==0 ){
258139 if( pConfig->bLocale && sqlite3Fts5IsLocaleValue(pConfig, pVal) ){
258154 if( pConfig->bLocale && pSeek ){
258155 pLoc = (const char*)sqlite3_column_text(pSeek, iCol+pConfig->nCol);
258156 nLoc = sqlite3_column_bytes(pSeek, iCol + pConfig->nCol);
258162 sqlite3Fts5SetLocale(pConfig, pLoc, nLoc);
258164 rc = sqlite3Fts5Tokenize(pConfig, FTS5_TOKENIZE_DOCUMENT,
258171 sqlite3Fts5ClearLocale(pConfig);
258216 assert( p->pConfig->bContentlessDelete );
258217 assert( p->pConfig->eContent==FTS5_CONTENT_NONE
258218 || p->pConfig->eContent==FTS5_CONTENT_UNINDEXED
258253 if( p->pConfig->bColumnsize ){
258258 if( p->pConfig->bContentlessDelete ){
258301 int nCol = p->pConfig->nCol;
258328 Fts5Config *pConfig = p->pConfig;
258332 assert( pConfig->eContent!=FTS5_CONTENT_NORMAL || apVal==0 );
258341 if( p->pConfig->bContentlessDelete ){
258345 && p->pConfig->eContent==FTS5_CONTENT_UNINDEXED
258355 if( rc==SQLITE_OK && pConfig->bColumnsize ){
258365 if( pConfig->eContent==FTS5_CONTENT_NORMAL
258366 || pConfig->eContent==FTS5_CONTENT_UNINDEXED
258385 Fts5Config *pConfig = p->pConfig;
258391 rc = fts5ExecPrintf(pConfig->db, 0,
258394 pConfig->zDb, pConfig->zName,
258395 pConfig->zDb, pConfig->zName
258397 if( rc==SQLITE_OK && pConfig->bColumnsize ){
258398 rc = fts5ExecPrintf(pConfig->db, 0,
258399 "DELETE FROM %Q.'%q_docsize';", pConfig->zDb, pConfig->zName
258403 if( rc==SQLITE_OK && pConfig->eContent==FTS5_CONTENT_UNINDEXED ){
258404 rc = fts5ExecPrintf(pConfig->db, 0,
258405 "DELETE FROM %Q.'%q_content';", pConfig->zDb, pConfig->zName
258422 Fts5Config *pConfig = p->pConfig;
258435 rc = fts5StorageGetStmt(p, FTS5_STMT_SCAN, &pScan, pConfig->pzErrmsg);
258443 for(ctx.iCol=0; rc==SQLITE_OK && ctx.iCol<pConfig->nCol; ctx.iCol++){
258445 if( pConfig->abUnindexed[ctx.iCol]==0 ){
258452 if( pConfig->eContent==FTS5_CONTENT_EXTERNAL
258453 && sqlite3Fts5IsLocaleValue(pConfig, pVal)
258459 if( pConfig->bLocale ){
258460 int iCol = ctx.iCol + 1 + pConfig->nCol;
258467 sqlite3Fts5SetLocale(pConfig, pLoc, nLoc);
258468 rc = sqlite3Fts5Tokenize(pConfig,
258474 sqlite3Fts5ClearLocale(pConfig);
258520 if( p->pConfig->bColumnsize ){
258530 *piRowid = sqlite3_last_insert_rowid(p->pConfig->db);
258545 Fts5Config *pConfig = p->pConfig;
258549 if( pConfig->eContent!=FTS5_CONTENT_NORMAL
258550 && pConfig->eContent!=FTS5_CONTENT_UNINDEXED
258571 for(i=2; rc==SQLITE_OK && i<=pConfig->nCol+1; i++){
258572 int bUnindexed = pConfig->abUnindexed[i-2];
258573 if( pConfig->eContent==FTS5_CONTENT_NORMAL || bUnindexed ){
258580 if( pConfig->bLocale && bUnindexed==0 ){
258581 sqlite3_bind_value(pInsert, pConfig->nCol + i,
258582 sqlite3_column_value(p->pSavedRow, pConfig->nCol + i - 1)
258585 }else if( sqlite3Fts5IsLocaleValue(pConfig, pVal) ){
258590 assert( pConfig->bLocale );
258596 int iLoc = pConfig->nCol + i;
258611 *piRowid = sqlite3_last_insert_rowid(pConfig->db);
258625 Fts5Config *pConfig = p->pConfig;
258637 for(ctx.iCol=0; rc==SQLITE_OK && ctx.iCol<pConfig->nCol; ctx.iCol++){
258639 if( pConfig->abUnindexed[ctx.iCol]==0 ){
258648 if( pConfig->eContent==FTS5_CONTENT_NORMAL && pConfig->bLocale ){
258649 int iCol = ctx.iCol + 1 + pConfig->nCol;
258657 if( pConfig->bLocale && sqlite3Fts5IsLocaleValue(pConfig, pVal) ){
258665 sqlite3Fts5SetLocale(pConfig, pLoc, nLoc);
258666 rc = sqlite3Fts5Tokenize(pConfig,
258670 sqlite3Fts5ClearLocale(pConfig);
258688 Fts5Config *pConfig = p->pConfig;
258693 pConfig->zDb, pConfig->zName, zSuffix
258699 rc = sqlite3_prepare_v2(pConfig->db, zSql, -1, &pCnt, 0);
258722 Fts5Config *pConfig;
258752 switch( pCtx->pConfig->eDetail ){
258764 assert( pCtx->pConfig->eDetail==FTS5_DETAIL_NONE );
258777 for(ii=0; rc==SQLITE_OK && ii<pCtx->pConfig->nPrefix; ii++){
258778 const int nChar = pCtx->pConfig->aPrefix[ii];
258800 Fts5Config *pConfig = p->pConfig;
258809 ctx.pConfig = p->pConfig;
258810 aTotalSize = (i64*)sqlite3_malloc64(pConfig->nCol*(sizeof(int)+sizeof(i64)));
258812 aColSize = (int*)&aTotalSize[pConfig->nCol];
258813 memset(aTotalSize, 0, sizeof(i64) * pConfig->nCol);
258815 bUseCksum = (pConfig->eContent==FTS5_CONTENT_NORMAL
258816 || (pConfig->eContent==FTS5_CONTENT_EXTERNAL && iArg)
258828 if( pConfig->bColumnsize ){
258831 if( rc==SQLITE_OK && pConfig->eDetail==FTS5_DETAIL_NONE ){
258834 for(i=0; rc==SQLITE_OK && i<pConfig->nCol; i++){
258835 if( pConfig->abUnindexed[i]==0 ){
258842 if( pConfig->eContent==FTS5_CONTENT_EXTERNAL
258843 && sqlite3Fts5IsLocaleValue(pConfig, pVal)
258849 if( pConfig->eContent==FTS5_CONTENT_NORMAL && pConfig->bLocale ){
258850 int iCol = i + 1 + pConfig->nCol;
258861 if( rc==SQLITE_OK && pConfig->eDetail==FTS5_DETAIL_COLUMNS ){
258866 sqlite3Fts5SetLocale(pConfig, pLoc, nLoc);
258867 rc = sqlite3Fts5Tokenize(pConfig,
258873 sqlite3Fts5ClearLocale(pConfig);
258880 && pConfig->bColumnsize
258886 if( pConfig->eDetail==FTS5_DETAIL_COLUMNS ){
258905 for(i=0; rc==SQLITE_OK && i<pConfig->nCol; i++){
258912 if( rc==SQLITE_OK && pConfig->eContent==FTS5_CONTENT_NORMAL ){
258917 if( rc==SQLITE_OK && pConfig->bColumnsize ){
259002 int nCol = p->pConfig->nCol; /* Number of user columns in table */
259006 assert( p->pConfig->bColumnsize );
259036 for(i=0; i<p->pConfig->nCol; i++){
259039 }else if( iCol<p->pConfig->nCol ){
259067 i64 iLastRowid = sqlite3_last_insert_rowid(p->pConfig->db);
259077 sqlite3_set_last_insert_rowid(p->pConfig->db, iLastRowid);
259106 int iNew = p->pConfig->iCookie + 1;
259109 p->pConfig->iCookie = iNew;
262113 i64 nByte = pFts5->pConfig->nCol * sizeof(i64)*2 + sizeof(Fts5VocabCursor);
262121 pCsr->aDoc = &pCsr->aCnt[pFts5->pConfig->nCol];
262178 int eDetail = pCsr->pFts5->pConfig->eDetail;
262212 int nCol = pCsr->pFts5->pConfig->nCol;
262254 int eDetail = pCsr->pFts5->pConfig->eDetail;
262410 || pCsr->pFts5->pConfig->eDetail!=FTS5_DETAIL_NONE)
262433 int eDetail = pCsr->pFts5->pConfig->eDetail;
262445 const char *z = pCsr->pFts5->pConfig->azCol[pCsr->iCol];
262473 if( ii>=0 && ii<pCsr->pFts5->pConfig->nCol ){
262474 const char *z = pCsr->pFts5->pConfig->azCol[ii];