From: drh Date: Sat, 24 Nov 2007 00:41:52 +0000 (+0000) Subject: The FTS3 amalgamation can now be appended to the SQLite amalgamation to X-Git-Tag: version-3.6.10~1619 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8255feca027a83a614afe0c4b5bc09d6179679c1;p=thirdparty%2Fsqlite.git The FTS3 amalgamation can now be appended to the SQLite amalgamation to generate a single source file that contains both components. (CVS 4558) FossilOrigin-Name: 0fc61f99b54bd269fcc011f448b9b971e902cb01 --- diff --git a/ext/fts3/fts3.c b/ext/fts3/fts3.c index bc52c6ac7a..2c53cb591e 100644 --- a/ext/fts3/fts3.c +++ b/ext/fts3/fts3.c @@ -287,7 +287,6 @@ #include "fts3.h" #include "fts3_hash.h" #include "fts3_tokenizer.h" -#include "sqlite3.h" #ifndef SQLITE_CORE #include "sqlite3ext.h" SQLITE_EXTENSION_INIT1 @@ -308,9 +307,9 @@ */ #if 0 -# define TRACE(A) printf A; fflush(stdout) +# define FTSTRACE(A) printf A; fflush(stdout) #else -# define TRACE(A) +# define FTSTRACE(A) #endif /* @@ -391,7 +390,7 @@ enum { /* Write a 64-bit variable-length integer to memory starting at p[0]. * The length of data written will be between 1 and VARINT_MAX bytes. * The number of bytes written is returned. */ -static int putVarint(char *p, sqlite_int64 v){ +static int fts3PutVarint(char *p, sqlite_int64 v){ unsigned char *q = (unsigned char *) p; sqlite_uint64 vu = v; do{ @@ -406,7 +405,7 @@ static int putVarint(char *p, sqlite_int64 v){ /* Read a 64-bit variable-length integer from memory starting at p[0]. * Return the number of bytes read, or 0 on error. * The value is stored in *v. */ -static int getVarint(const char *p, sqlite_int64 *v){ +static int fts3GetVarint(const char *p, sqlite_int64 *v){ const unsigned char *q = (const unsigned char *) p; sqlite_uint64 x = 0, y = 1; while( (*q & 0x80) == 0x80 ){ @@ -422,9 +421,9 @@ static int getVarint(const char *p, sqlite_int64 *v){ return (int) (q - (unsigned char *)p); } -static int getVarint32(const char *p, int *pi){ +static int fts3GetVarint32(const char *p, int *pi){ sqlite_int64 i; - int ret = getVarint(p, &i); + int ret = fts3GetVarint(p, &i); *pi = (int) i; assert( *pi==i ); return ret; @@ -616,13 +615,13 @@ static int dlrAllDataBytes(DLReader *pReader){ */ static const char *dlrPosData(DLReader *pReader){ sqlite_int64 iDummy; - int n = getVarint(pReader->pData, &iDummy); + int n = fts3GetVarint(pReader->pData, &iDummy); assert( !dlrAtEnd(pReader) ); return pReader->pData+n; } static int dlrPosDataLen(DLReader *pReader){ sqlite_int64 iDummy; - int n = getVarint(pReader->pData, &iDummy); + int n = fts3GetVarint(pReader->pData, &iDummy); assert( !dlrAtEnd(pReader) ); return pReader->nElement-n; } @@ -637,20 +636,20 @@ static void dlrStep(DLReader *pReader){ /* If there is more data, read the next doclist element. */ if( pReader->nData!=0 ){ sqlite_int64 iDocidDelta; - int iDummy, n = getVarint(pReader->pData, &iDocidDelta); + int iDummy, n = fts3GetVarint(pReader->pData, &iDocidDelta); pReader->iDocid += iDocidDelta; if( pReader->iType>=DL_POSITIONS ){ assert( nnData ); while( 1 ){ - n += getVarint32(pReader->pData+n, &iDummy); + n += fts3GetVarint32(pReader->pData+n, &iDummy); assert( n<=pReader->nData ); if( iDummy==POS_END ) break; if( iDummy==POS_COLUMN ){ - n += getVarint32(pReader->pData+n, &iDummy); + n += fts3GetVarint32(pReader->pData+n, &iDummy); assert( nnData ); }else if( pReader->iType==DL_POSITIONS_OFFSETS ){ - n += getVarint32(pReader->pData+n, &iDummy); - n += getVarint32(pReader->pData+n, &iDummy); + n += fts3GetVarint32(pReader->pData+n, &iDummy); + n += fts3GetVarint32(pReader->pData+n, &iDummy); assert( nnData ); } } @@ -688,18 +687,18 @@ static void docListValidate(DocListType iType, const char *pData, int nData, assert( pData+nData>pData ); while( nData!=0 ){ sqlite_int64 iDocidDelta; - int n = getVarint(pData, &iDocidDelta); + int n = fts3GetVarint(pData, &iDocidDelta); iPrevDocid += iDocidDelta; if( iType>DL_DOCIDS ){ int iDummy; while( 1 ){ - n += getVarint32(pData+n, &iDummy); + n += fts3GetVarint32(pData+n, &iDummy); if( iDummy==POS_END ) break; if( iDummy==POS_COLUMN ){ - n += getVarint32(pData+n, &iDummy); + n += fts3GetVarint32(pData+n, &iDummy); }else if( iType>DL_POSITIONS ){ - n += getVarint32(pData+n, &iDummy); - n += getVarint32(pData+n, &iDummy); + n += fts3GetVarint32(pData+n, &iDummy); + n += fts3GetVarint32(pData+n, &iDummy); } assert( n<=nData ); } @@ -770,9 +769,9 @@ static void dlwAppend(DLWriter *pWriter, #endif /* Recode the initial docid as delta from iPrevDocid. */ - nFirstOld = getVarint(pData, &iDocid); + nFirstOld = fts3GetVarint(pData, &iDocid); assert( nFirstOldiType==DL_DOCIDS) ); - nFirstNew = putVarint(c, iFirstDocid-pWriter->iPrevDocid); + nFirstNew = fts3PutVarint(c, iFirstDocid-pWriter->iPrevDocid); /* Verify that the incoming doclist is valid AND that it ends with ** the expected docid. This is essential because we'll trust this @@ -798,7 +797,7 @@ static void dlwCopy(DLWriter *pWriter, DLReader *pReader){ } static void dlwAdd(DLWriter *pWriter, sqlite_int64 iDocid){ char c[VARINT_MAX]; - int n = putVarint(c, iDocid-pWriter->iPrevDocid); + int n = fts3PutVarint(c, iDocid-pWriter->iPrevDocid); /* Docids must ascend. */ assert( !pWriter->has_iPrevDocid || iDocid>pWriter->iPrevDocid ); @@ -865,12 +864,12 @@ static void plrStep(PLReader *pReader){ return; } - n = getVarint32(pReader->pData, &i); + n = fts3GetVarint32(pReader->pData, &i); if( i==POS_COLUMN ){ - n += getVarint32(pReader->pData+n, &pReader->iColumn); + n += fts3GetVarint32(pReader->pData+n, &pReader->iColumn); pReader->iPosition = 0; pReader->iStartOffset = 0; - n += getVarint32(pReader->pData+n, &i); + n += fts3GetVarint32(pReader->pData+n, &i); } /* Should never see adjacent column changes. */ assert( i!=POS_COLUMN ); @@ -883,9 +882,9 @@ static void plrStep(PLReader *pReader){ pReader->iPosition += i-POS_BASE; if( pReader->iType==DL_POSITIONS_OFFSETS ){ - n += getVarint32(pReader->pData+n, &i); + n += fts3GetVarint32(pReader->pData+n, &i); pReader->iStartOffset += i; - n += getVarint32(pReader->pData+n, &i); + n += fts3GetVarint32(pReader->pData+n, &i); pReader->iEndOffset = pReader->iStartOffset+i; } assert( n<=pReader->nData ); @@ -957,21 +956,21 @@ static void plwAdd(PLWriter *pWriter, int iColumn, int iPos, if( pWriter->dlw->iType==DL_DOCIDS ) return; if( iColumn!=pWriter->iColumn ){ - n += putVarint(c+n, POS_COLUMN); - n += putVarint(c+n, iColumn); + n += fts3PutVarint(c+n, POS_COLUMN); + n += fts3PutVarint(c+n, iColumn); pWriter->iColumn = iColumn; pWriter->iPos = 0; pWriter->iOffset = 0; } assert( iPos>=pWriter->iPos ); - n += putVarint(c+n, POS_BASE+(iPos-pWriter->iPos)); + n += fts3PutVarint(c+n, POS_BASE+(iPos-pWriter->iPos)); pWriter->iPos = iPos; if( pWriter->dlw->iType==DL_POSITIONS_OFFSETS ){ assert( iStartOffset>=pWriter->iOffset ); - n += putVarint(c+n, iStartOffset-pWriter->iOffset); + n += fts3PutVarint(c+n, iStartOffset-pWriter->iOffset); pWriter->iOffset = iStartOffset; assert( iEndOffset>=iStartOffset ); - n += putVarint(c+n, iEndOffset-iStartOffset); + n += fts3PutVarint(c+n, iEndOffset-iStartOffset); } dataBufferAppend(pWriter->dlw->b, c, n); } @@ -987,7 +986,7 @@ static void plwInit(PLWriter *pWriter, DLWriter *dlw, sqlite_int64 iDocid){ /* Docids must ascend. */ assert( !pWriter->dlw->has_iPrevDocid || iDocid>pWriter->dlw->iPrevDocid ); - n = putVarint(c, iDocid-pWriter->dlw->iPrevDocid); + n = fts3PutVarint(c, iDocid-pWriter->dlw->iPrevDocid); dataBufferAppend(pWriter->dlw->b, c, n); pWriter->dlw->iPrevDocid = iDocid; #ifndef NDEBUG @@ -1009,7 +1008,7 @@ static void plwInit(PLWriter *pWriter, DLWriter *dlw, sqlite_int64 iDocid){ static void plwTerminate(PLWriter *pWriter){ if( pWriter->dlw->iType>DL_DOCIDS ){ char c[VARINT_MAX]; - int n = putVarint(c, POS_END); + int n = fts3PutVarint(c, POS_END); dataBufferAppend(pWriter->dlw->b, c, n); } #ifndef NDEBUG @@ -1048,7 +1047,7 @@ typedef struct DLCollector { static void dlcAddDoclist(DLCollector *pCollector, DataBuffer *b){ if( pCollector->dlw.iType>DL_DOCIDS ){ char c[VARINT_MAX]; - int n = putVarint(c, POS_END); + int n = fts3PutVarint(c, POS_END); dataBufferAppend2(b, pCollector->b.pData, pCollector->b.nData, c, n); }else{ dataBufferAppend(b, pCollector->b.pData, pCollector->b.nData); @@ -1762,7 +1761,7 @@ static int sql_exec(sqlite3 *db, const char *zDb, const char *zName, const char *zFormat){ char *zCommand = string_format(zFormat, zDb, zName); int rc; - TRACE(("FTS3 sql: %s\n", zCommand)); + FTSTRACE(("FTS3 sql: %s\n", zCommand)); rc = sqlite3_exec(db, zCommand, NULL, 0, NULL); sqlite3_free(zCommand); return rc; @@ -1772,7 +1771,7 @@ static int sql_prepare(sqlite3 *db, const char *zDb, const char *zName, sqlite3_stmt **ppStmt, const char *zFormat){ char *zCommand = string_format(zFormat, zDb, zName); int rc; - TRACE(("FTS3 prepare: %s\n", zCommand)); + FTSTRACE(("FTS3 prepare: %s\n", zCommand)); rc = sqlite3_prepare_v2(db, zCommand, -1, ppStmt, NULL); sqlite3_free(zCommand); return rc; @@ -2423,7 +2422,7 @@ static int clearPendingTerms(fulltext_vtab *v); static void fulltext_vtab_destroy(fulltext_vtab *v){ int iStmt, i; - TRACE(("FTS3 Destroy %p\n", v)); + FTSTRACE(("FTS3 Destroy %p\n", v)); for( iStmt=0; iStmtpFulltextStatements[iStmt]!=NULL ){ sqlite3_finalize(v->pFulltextStatements[iStmt]); @@ -2464,18 +2463,18 @@ static void fulltext_vtab_destroy(fulltext_vtab *v){ /* ** If X is a character that can be used in an identifier then -** IdChar(X) will be true. Otherwise it is false. +** ftsIdChar(X) will be true. Otherwise it is false. ** ** For ASCII, any character with the high-order bit set is ** allowed in an identifier. For 7-bit characters, -** sqlite3IsIdChar[X] must be 1. +** isFtsIdChar[X] must be 1. ** ** Ticket #1066. the SQL standard does not allow '$' in the ** middle of identfiers. But many SQL implementations do. ** SQLite will allow '$' in identifiers for compatibility. ** But the feature is undocumented. */ -static const char isIdChar[] = { +static const char isFtsIdChar[] = { /* x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF */ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 2x */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* 3x */ @@ -2484,14 +2483,14 @@ static const char isIdChar[] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 6x */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, /* 7x */ }; -#define IdChar(C) (((c=C)&0x80)!=0 || (c>0x1f && isIdChar[c-0x20])) +#define ftsIdChar(C) (((c=C)&0x80)!=0 || (c>0x1f && isFtsIdChar[c-0x20])) /* ** Return the length of the token that begins at z[0]. ** Store the token type in *tokenType before returning. */ -static int getToken(const char *z, int *tokenType){ +static int ftsGetToken(const char *z, int *tokenType){ int i, c; switch( *z ){ case 0: { @@ -2525,10 +2524,10 @@ static int getToken(const char *z, int *tokenType){ return i; } default: { - if( !IdChar(*z) ){ + if( !ftsIdChar(*z) ){ break; } - for(i=1; IdChar(z[i]); i++){} + for(i=1; ftsIdChar(z[i]); i++){} *tokenType = TOKEN_ID; return i; } @@ -2541,10 +2540,10 @@ static int getToken(const char *z, int *tokenType){ ** A token extracted from a string is an instance of the following ** structure. */ -typedef struct Token { +typedef struct FtsToken { const char *z; /* Pointer to token text. Not '\000' terminated */ short int n; /* Length of the token text in bytes. */ -} Token; +} FtsToken; /* ** Given a input string (which is really one of the argv[] parameters @@ -2561,14 +2560,14 @@ typedef struct Token { */ static char **tokenizeString(const char *z, int *pnToken){ int nToken = 0; - Token *aToken = sqlite3_malloc( strlen(z) * sizeof(aToken[0]) ); + FtsToken *aToken = sqlite3_malloc( strlen(z) * sizeof(aToken[0]) ); int n = 1; int e, i; int totalSize = 0; char **azToken; char *zCopy; while( n>0 ){ - n = getToken(z, &e); + n = ftsGetToken(z, &e); if( e!=TOKEN_SPACE ){ aToken[nToken].z = z; aToken[nToken].n = n; @@ -2673,7 +2672,7 @@ static void tokenListToIdList(char **azIn){ static char *firstToken(char *zIn, char **pzTail){ int n, ttype; while(1){ - n = getToken(zIn, &ttype); + n = ftsGetToken(zIn, &ttype); if( ttype==TOKEN_SPACE ){ zIn += n; }else if( ttype==TOKEN_EOF ){ @@ -2934,7 +2933,7 @@ static int constructVtab( v->nPendingData = -1; *ppVTab = &v->base; - TRACE(("FTS3 Connect %p\n", v)); + FTSTRACE(("FTS3 Connect %p\n", v)); return rc; @@ -2971,7 +2970,7 @@ static int fulltextCreate(sqlite3 *db, void *pAux, int rc; TableSpec spec; StringBuffer schema; - TRACE(("FTS3 Create\n")); + FTSTRACE(("FTS3 Create\n")); rc = parseSpec(&spec, argc, argv, pzErr); if( rc!=SQLITE_OK ) return rc; @@ -3016,7 +3015,7 @@ out: static int fulltextBestIndex(sqlite3_vtab *pVTab, sqlite3_index_info *pInfo){ fulltext_vtab *v = (fulltext_vtab *)pVTab; int i; - TRACE(("FTS3 BestIndex\n")); + FTSTRACE(("FTS3 BestIndex\n")); for(i=0; inConstraint; ++i){ const struct sqlite3_index_constraint *pConstraint; @@ -3025,12 +3024,12 @@ static int fulltextBestIndex(sqlite3_vtab *pVTab, sqlite3_index_info *pInfo){ if( (pConstraint->iColumn==-1 || pConstraint->iColumn==v->nColumn+1) && pConstraint->op==SQLITE_INDEX_CONSTRAINT_EQ ){ pInfo->idxNum = QUERY_DOCID; /* lookup by docid */ - TRACE(("FTS3 QUERY_DOCID\n")); + FTSTRACE(("FTS3 QUERY_DOCID\n")); } else if( pConstraint->iColumn>=0 && pConstraint->iColumn<=v->nColumn && pConstraint->op==SQLITE_INDEX_CONSTRAINT_MATCH ){ /* full-text search */ pInfo->idxNum = QUERY_FULLTEXT + pConstraint->iColumn; - TRACE(("FTS3 QUERY_FULLTEXT %d\n", pConstraint->iColumn)); + FTSTRACE(("FTS3 QUERY_FULLTEXT %d\n", pConstraint->iColumn)); } else continue; pInfo->aConstraintUsage[i].argvIndex = 1; @@ -3049,7 +3048,7 @@ static int fulltextBestIndex(sqlite3_vtab *pVTab, sqlite3_index_info *pInfo){ } static int fulltextDisconnect(sqlite3_vtab *pVTab){ - TRACE(("FTS3 Disconnect %p\n", pVTab)); + FTSTRACE(("FTS3 Disconnect %p\n", pVTab)); fulltext_vtab_destroy((fulltext_vtab *)pVTab); return SQLITE_OK; } @@ -3058,7 +3057,7 @@ static int fulltextDestroy(sqlite3_vtab *pVTab){ fulltext_vtab *v = (fulltext_vtab *)pVTab; int rc; - TRACE(("FTS3 Destroy %p\n", pVTab)); + FTSTRACE(("FTS3 Destroy %p\n", pVTab)); rc = sql_exec(v->db, v->zDb, v->zName, "drop table if exists %_content;" "drop table if exists %_segments;" @@ -3078,7 +3077,7 @@ static int fulltextOpen(sqlite3_vtab *pVTab, sqlite3_vtab_cursor **ppCursor){ memset(c, 0, sizeof(fulltext_cursor)); /* sqlite will initialize c->base */ *ppCursor = &c->base; - TRACE(("FTS3 Open %p: %p\n", pVTab, c)); + FTSTRACE(("FTS3 Open %p: %p\n", pVTab, c)); return SQLITE_OK; }else{ return SQLITE_NOMEM; @@ -3550,7 +3549,7 @@ static void snippetText( */ static int fulltextClose(sqlite3_vtab_cursor *pCursor){ fulltext_cursor *c = (fulltext_cursor *) pCursor; - TRACE(("FTS3 Close %p\n", c)); + FTSTRACE(("FTS3 Close %p\n", c)); sqlite3_finalize(c->pStmt); queryClear(&c->q); snippetClear(&c->snippet); @@ -3564,7 +3563,7 @@ static int fulltextNext(sqlite3_vtab_cursor *pCursor){ fulltext_cursor *c = (fulltext_cursor *) pCursor; int rc; - TRACE(("FTS3 Next %p\n", pCursor)); + FTSTRACE(("FTS3 Next %p\n", pCursor)); snippetClear(&c->snippet); if( c->iCursorType < QUERY_FULLTEXT ){ /* TODO(shess) Handle SQLITE_SCHEMA AND SQLITE_BUSY. */ @@ -4012,7 +4011,7 @@ static int fulltextFilter( int rc; StringBuffer sb; - TRACE(("FTS3 Filter %p\n",pCursor)); + FTSTRACE(("FTS3 Filter %p\n",pCursor)); initStringBuffer(&sb); append(&sb, "SELECT docid, "); @@ -4309,8 +4308,8 @@ static InteriorBlock *interiorBlockNew(int iHeight, sqlite_int64 iChildBlock, dataBufferInit(&block->term, 0); dataBufferReplace(&block->term, pTerm, nTerm); - n = putVarint(c, iHeight); - n += putVarint(c+n, iChildBlock); + n = fts3PutVarint(c, iHeight); + n += fts3PutVarint(c+n, iChildBlock); dataBufferInit(&block->data, INTERIOR_MAX); dataBufferReplace(&block->data, c, n); } @@ -4330,7 +4329,7 @@ static void interiorBlockValidate(InteriorBlock *pBlock){ assert( pData+nData>pData ); /* Must lead with height of node as a varint(n), n>0 */ - n = getVarint32(pData, &iDummy); + n = fts3GetVarint32(pData, &iDummy); assert( n>0 ); assert( iDummy>0 ); assert( n0 ); assert( n<=nData ); pData += n; @@ -4347,7 +4346,7 @@ static void interiorBlockValidate(InteriorBlock *pBlock){ /* Zero or more terms of positive length */ if( nData!=0 ){ /* First term is not delta-encoded. */ - n = getVarint32(pData, &iDummy); + n = fts3GetVarint32(pData, &iDummy); assert( n>0 ); assert( iDummy>0 ); assert( n+iDummy>0); @@ -4358,7 +4357,7 @@ static void interiorBlockValidate(InteriorBlock *pBlock){ /* Following terms delta-encoded. */ while( nData!=0 ){ /* Length of shared prefix. */ - n = getVarint32(pData, &iDummy); + n = fts3GetVarint32(pData, &iDummy); assert( n>0 ); assert( iDummy>=0 ); assert( n0 ); assert( iDummy>0 ); assert( n+iDummy>0); @@ -4433,15 +4432,15 @@ static void interiorWriterAppend(InteriorWriter *pWriter, ** at 0. */ if( pWriter->term.nData==0 ){ - n = putVarint(c, nTerm); + n = fts3PutVarint(c, nTerm); }else{ while( nPrefixterm.nData && pTerm[nPrefix]==pWriter->term.pData[nPrefix] ){ nPrefix++; } - n = putVarint(c, nPrefix); - n += putVarint(c+n, nTerm-nPrefix); + n = fts3PutVarint(c, nPrefix); + n += fts3PutVarint(c+n, nTerm-nPrefix); } #ifndef NDEBUG @@ -4571,7 +4570,7 @@ static void interiorReaderInit(const char *pData, int nData, CLEAR(pReader); /* Decode the base blockid, and set the cursor to the first term. */ - n = getVarint(pData+1, &pReader->iBlockid); + n = fts3GetVarint(pData+1, &pReader->iBlockid); assert( 1+n<=nData ); pReader->pData = pData+1+n; pReader->nData = nData-(1+n); @@ -4583,7 +4582,7 @@ static void interiorReaderInit(const char *pData, int nData, if( pReader->nData==0 ){ dataBufferInit(&pReader->term, 0); }else{ - n = getVarint32(pReader->pData, &nTerm); + n = fts3GetVarint32(pReader->pData, &nTerm); dataBufferInit(&pReader->term, nTerm); dataBufferReplace(&pReader->term, pReader->pData+n, nTerm); assert( n+nTerm<=pReader->nData ); @@ -4621,8 +4620,8 @@ static void interiorReaderStep(InteriorReader *pReader){ }else{ int n, nPrefix, nSuffix; - n = getVarint32(pReader->pData, &nPrefix); - n += getVarint32(pReader->pData+n, &nSuffix); + n = fts3GetVarint32(pReader->pData, &nPrefix); + n += fts3GetVarint32(pReader->pData+n, &nSuffix); /* Truncate the current term and append suffix data. */ pReader->term.nData = nPrefix; @@ -4727,7 +4726,7 @@ static void leafNodeValidate(const char *pData, int nData){ assert( pData+nData>pData ); /* Must lead with a varint(0) */ - n = getVarint32(pData, &iDummy); + n = fts3GetVarint32(pData, &iDummy); assert( iDummy==0 ); assert( n>0 ); assert( n0 ); assert( iDummy>0 ); assert( n+iDummy>0 ); @@ -4744,7 +4743,7 @@ static void leafNodeValidate(const char *pData, int nData){ nData -= n+iDummy; /* Leading term's doclist length and data must fit. */ - n = getVarint32(pData, &iDummy); + n = fts3GetVarint32(pData, &iDummy); assert( n>0 ); assert( iDummy>0 ); assert( n+iDummy>0 ); @@ -4755,13 +4754,13 @@ static void leafNodeValidate(const char *pData, int nData){ /* Verify that trailing terms and doclists also are readable. */ while( nData!=0 ){ - n = getVarint32(pData, &iDummy); + n = fts3GetVarint32(pData, &iDummy); assert( n>0 ); assert( iDummy>=0 ); assert( n0 ); assert( iDummy>0 ); assert( n+iDummy>0 ); @@ -4769,7 +4768,7 @@ static void leafNodeValidate(const char *pData, int nData){ pData += n+iDummy; nData -= n+iDummy; - n = getVarint32(pData, &iDummy); + n = fts3GetVarint32(pData, &iDummy); assert( n>0 ); assert( iDummy>0 ); assert( n+iDummy>0 ); @@ -4809,7 +4808,7 @@ static int leafWriterInternalFlush(fulltext_vtab *v, LeafWriter *pWriter, /* Reconstruct the first term in the leaf for purposes of building ** the interior node. */ - n = getVarint32(pWriter->data.pData+iData+1, &nStartingTerm); + n = fts3GetVarint32(pWriter->data.pData+iData+1, &nStartingTerm); pStartingTerm = pWriter->data.pData+iData+1+n; assert( pWriter->data.nData>iData+1+n+nStartingTerm ); assert( pWriter->nTermDistinct>0 ); @@ -4933,8 +4932,8 @@ static int leafWriterEncodeTerm(LeafWriter *pWriter, ** varint(nTerm) ** char pTerm[nTerm] */ - n = putVarint(c, '\0'); - n += putVarint(c+n, nTerm); + n = fts3PutVarint(c, '\0'); + n += fts3PutVarint(c+n, nTerm); dataBufferAppend2(&pWriter->data, c, n, pTerm, nTerm); }else{ /* Delta-encode the term as: @@ -4942,8 +4941,8 @@ static int leafWriterEncodeTerm(LeafWriter *pWriter, ** varint(nSuffix) ** char pTermSuffix[nSuffix] */ - n = putVarint(c, nPrefix); - n += putVarint(c+n, nTerm-nPrefix); + n = fts3PutVarint(c, nPrefix); + n += fts3PutVarint(c+n, nTerm-nPrefix); dataBufferAppend2(&pWriter->data, c, n, pTerm+nPrefix, nTerm-nPrefix); } dataBufferReplace(&pWriter->term, pTerm, nTerm); @@ -4960,8 +4959,8 @@ static int leafWriterInlineFlush(fulltext_vtab *v, LeafWriter *pWriter, const char *pTerm, int nTerm, int iDoclistData){ char c[VARINT_MAX+VARINT_MAX]; - int iData, n = putVarint(c, 0); - n += putVarint(c+n, nTerm); + int iData, n = fts3PutVarint(c, 0); + n += fts3PutVarint(c+n, nTerm); /* There should always be room for the header. Even if pTerm shared ** a substantial prefix with the previous term, the entire prefix @@ -5001,7 +5000,7 @@ static int leafWriterStepMerge(fulltext_vtab *v, LeafWriter *pWriter, for(i=0, nData=0; idata, c, n); docListMerge(&pWriter->data, pReaders, nReaders); @@ -5015,7 +5014,7 @@ static int leafWriterStepMerge(fulltext_vtab *v, LeafWriter *pWriter, ** not a big deal, we can just use memmove() to adjust things. */ nActualData = pWriter->data.nData-(iDoclistData+n); - nActual = putVarint(c, nActualData); + nActual = fts3PutVarint(c, nActualData); assert( nActualData<=nData ); assert( nActual<=n ); @@ -5078,8 +5077,8 @@ static int leafWriterStepMerge(fulltext_vtab *v, LeafWriter *pWriter, pWriter->nTermDistinct = nTermDistinct; /* Rebuild header using the current term */ - n = putVarint(pWriter->data.pData, 0); - n += putVarint(pWriter->data.pData+n, nTerm); + n = fts3PutVarint(pWriter->data.pData, 0); + n += fts3PutVarint(pWriter->data.pData+n, nTerm); memcpy(pWriter->data.pData+n, pTerm, nTerm); n += nTerm; @@ -5153,13 +5152,13 @@ static const char *leafReaderTerm(LeafReader *pReader){ static int leafReaderDataBytes(LeafReader *pReader){ int nData; assert( pReader->term.nData>0 ); - getVarint32(pReader->pData, &nData); + fts3GetVarint32(pReader->pData, &nData); return nData; } static const char *leafReaderData(LeafReader *pReader){ int n, nData; assert( pReader->term.nData>0 ); - n = getVarint32(pReader->pData, &nData); + n = fts3GetVarint32(pReader->pData, &nData); return pReader->pData+n; } @@ -5173,7 +5172,7 @@ static void leafReaderInit(const char *pData, int nData, CLEAR(pReader); /* Read the first term, skipping the header byte. */ - n = getVarint32(pData+1, &nTerm); + n = fts3GetVarint32(pData+1, &nTerm); dataBufferInit(&pReader->term, nTerm); dataBufferReplace(&pReader->term, pData+1+n, nTerm); @@ -5189,7 +5188,7 @@ static void leafReaderStep(LeafReader *pReader){ assert( !leafReaderAtEnd(pReader) ); /* Skip previous entry's data block. */ - n = getVarint32(pReader->pData, &nData); + n = fts3GetVarint32(pReader->pData, &nData); assert( n+nData<=pReader->nData ); pReader->pData += n+nData; pReader->nData -= n+nData; @@ -5198,8 +5197,8 @@ static void leafReaderStep(LeafReader *pReader){ /* Construct the new term using a prefix from the old term plus a ** suffix from the leaf data. */ - n = getVarint32(pReader->pData, &nPrefix); - n += getVarint32(pReader->pData+n, &nSuffix); + n = fts3GetVarint32(pReader->pData, &nPrefix); + n += fts3GetVarint32(pReader->pData+n, &nSuffix); assert( n+nSuffixnData ); pReader->term.nData = nPrefix; dataBufferAppend(&pReader->term, pReader->pData+n, nSuffix); @@ -5996,7 +5995,7 @@ static int fulltextUpdate(sqlite3_vtab *pVtab, int nArg, sqlite3_value **ppArg, fulltext_vtab *v = (fulltext_vtab *) pVtab; int rc; - TRACE(("FTS3 Update %p\n", pVtab)); + FTSTRACE(("FTS3 Update %p\n", pVtab)); if( nArg<2 ){ rc = index_delete(v, sqlite3_value_int64(ppArg[0])); @@ -6050,13 +6049,13 @@ static int fulltextUpdate(sqlite3_vtab *pVtab, int nArg, sqlite3_value **ppArg, } static int fulltextSync(sqlite3_vtab *pVtab){ - TRACE(("FTS3 xSync()\n")); + FTSTRACE(("FTS3 xSync()\n")); return flushPendingTerms((fulltext_vtab *)pVtab); } static int fulltextBegin(sqlite3_vtab *pVtab){ fulltext_vtab *v = (fulltext_vtab *) pVtab; - TRACE(("FTS3 xBegin()\n")); + FTSTRACE(("FTS3 xBegin()\n")); /* Any buffered updates should have been cleared by the previous ** transaction. @@ -6067,7 +6066,7 @@ static int fulltextBegin(sqlite3_vtab *pVtab){ static int fulltextCommit(sqlite3_vtab *pVtab){ fulltext_vtab *v = (fulltext_vtab *) pVtab; - TRACE(("FTS3 xCommit()\n")); + FTSTRACE(("FTS3 xCommit()\n")); /* Buffered updates should have been cleared by fulltextSync(). */ assert( v->nPendingData<0 ); @@ -6075,7 +6074,7 @@ static int fulltextCommit(sqlite3_vtab *pVtab){ } static int fulltextRollback(sqlite3_vtab *pVtab){ - TRACE(("FTS3 xRollback()\n")); + FTSTRACE(("FTS3 xRollback()\n")); return clearPendingTerms((fulltext_vtab *)pVtab); } diff --git a/ext/fts3/fts3_hash.c b/ext/fts3/fts3_hash.c index e1010fb2f3..64bd5d0276 100644 --- a/ext/fts3/fts3_hash.c +++ b/ext/fts3/fts3_hash.c @@ -131,13 +131,13 @@ static int fts3BinCompare(const void *pKey1, int n1, const void *pKey2, int n2){ ** The C syntax in this function definition may be unfamilar to some ** programmers, so we provide the following additional explanation: ** -** The name of the function is "hashFunction". The function takes a -** single parameter "keyClass". The return value of hashFunction() +** The name of the function is "ftsHashFunction". The function takes a +** single parameter "keyClass". The return value of ftsHashFunction() ** is a pointer to another function. Specifically, the return value -** of hashFunction() is a pointer to a function that takes two parameters +** of ftsHashFunction() is a pointer to a function that takes two parameters ** with types "const void*" and "int" and returns an "int". */ -static int (*hashFunction(int keyClass))(const void*,int){ +static int (*ftsHashFunction(int keyClass))(const void*,int){ if( keyClass==FTS3_HASH_STRING ){ return &fts3StrHash; }else{ @@ -152,7 +152,7 @@ static int (*hashFunction(int keyClass))(const void*,int){ ** For help in interpreted the obscure C code in the function definition, ** see the header comment on the previous function. */ -static int (*compareFunction(int keyClass))(const void*,int,const void*,int){ +static int (*ftsCompareFunction(int keyClass))(const void*,int,const void*,int){ if( keyClass==FTS3_HASH_STRING ){ return &fts3StrCompare; }else{ @@ -202,7 +202,7 @@ static void fts3Rehash(fts3Hash *pH, int new_size){ fts3HashFree(pH->ht); pH->ht = new_ht; pH->htsize = new_size; - xHash = hashFunction(pH->keyClass); + xHash = ftsHashFunction(pH->keyClass); for(elem=pH->first, pH->first=0; elem; elem = next_elem){ int h = (*xHash)(elem->pKey, elem->nKey) & (new_size-1); next_elem = elem->next; @@ -228,7 +228,7 @@ static fts3HashElem *fts3FindElementByHash( struct _fts3ht *pEntry = &pH->ht[h]; elem = pEntry->chain; count = pEntry->count; - xCompare = compareFunction(pH->keyClass); + xCompare = ftsCompareFunction(pH->keyClass); while( count-- && elem ){ if( (*xCompare)(elem->pKey,elem->nKey,pKey,nKey)==0 ){ return elem; @@ -286,7 +286,7 @@ void *sqlite3Fts3HashFind(const fts3Hash *pH, const void *pKey, int nKey){ int (*xHash)(const void*,int); /* The hash function */ if( pH==0 || pH->ht==0 ) return 0; - xHash = hashFunction(pH->keyClass); + xHash = ftsHashFunction(pH->keyClass); assert( xHash!=0 ); h = (*xHash)(pKey,nKey); assert( (pH->htsize & (pH->htsize-1))==0 ); @@ -322,7 +322,7 @@ void *sqlite3Fts3HashInsert( int (*xHash)(const void*,int); /* The hash function */ assert( pH!=0 ); - xHash = hashFunction(pH->keyClass); + xHash = ftsHashFunction(pH->keyClass); assert( xHash!=0 ); hraw = (*xHash)(pKey, nKey); assert( (pH->htsize & (pH->htsize-1))==0 ); diff --git a/ext/fts3/fts3_tokenizer.c b/ext/fts3/fts3_tokenizer.c index 7398227257..ebd0bfe043 100644 --- a/ext/fts3/fts3_tokenizer.c +++ b/ext/fts3/fts3_tokenizer.c @@ -25,8 +25,6 @@ */ #if !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) - -#include "sqlite3.h" #include "sqlite3ext.h" SQLITE_EXTENSION_INIT1 diff --git a/manifest b/manifest index 8a4f1319eb..7e69d6041e 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sa\stypo\sin\sa\schange\sto\sall.test\sfrom\searlier\stoday.\s(CVS\s4557) -D 2007-11-23T18:19:22 +C The\sFTS3\samalgamation\scan\snow\sbe\sappended\sto\sthe\sSQLite\samalgamation\sto\ngenerate\sa\ssingle\ssource\sfile\sthat\scontains\sboth\scomponents.\s(CVS\s4558) +D 2007-11-24T00:41:52 F Makefile.arm-wince-mingw32ce-gcc ac5f7b2cef0cd850d6f755ba6ee4ab961b1fadf7 F Makefile.in 35396fd58890420b29edcf27b6c0e2d054862a6b F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654 @@ -50,13 +50,13 @@ F ext/fts2/fts2_tokenizer1.c 8a545c232bdffafd117c4eeaf59789691909f26a F ext/fts2/mkfts2amal.tcl 974d5d438cb3f7c4a652639262f82418c1e4cff0 F ext/fts3/README.tokenizers a97c9a55b3422f6cb04af9de9296fe2447ea4a78 F ext/fts3/README.txt 8c18f41574404623b76917b9da66fcb0ab38328d -F ext/fts3/fts3.c 2ea2aead0d342a9844f522d9b51e24d47614b06b +F ext/fts3/fts3.c b95b4b62211335cf74d2485a7c17925a9f8338f8 F ext/fts3/fts3.h 3a10a0af180d502cecc50df77b1b22df142817fe -F ext/fts3/fts3_hash.c 76506de426f8df5527254f5e0bc1abf05e83a2b8 +F ext/fts3/fts3_hash.c 83e7bb4042106b32811681dd2859b4577a7a6b35 F ext/fts3/fts3_hash.h 004b759e1602ff16dfa02fea3ca1c77336ad6798 F ext/fts3/fts3_icu.c e676f8f0c472cfbb3194febf0eadc1cea6ff0d0c F ext/fts3/fts3_porter.c 3063da945fb0a935781c135f7575f39166173eca -F ext/fts3/fts3_tokenizer.c 81e7604555b24dce6bc487d8169ca4ef51c71e4c +F ext/fts3/fts3_tokenizer.c d777c079eaa76996e8493596b1124898d5692271 F ext/fts3/fts3_tokenizer.h 7eb79de4f991a77f43c517e209e5fae95dfa7369 F ext/fts3/fts3_tokenizer1.c 0a5bcc579f35de5d24a9345d7908dc25ae403ee7 F ext/fts3/mkfts3amal.tcl 8282b56f11d008b9fa1f09ad3f7eca513949575e @@ -590,7 +590,7 @@ F www/tclsqlite.tcl 8be95ee6dba05eabcd27a9d91331c803f2ce2130 F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0 F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b F www/whentouse.tcl fc46eae081251c3c181bd79c5faef8195d7991a5 -P f94cdcfd1171fd110ed9cd4c47f1fb5fa7e99ca9 -R cf810e1e41ea0c1ce9c3cdeb8ac44a5e +P 8c0b2157f2a2f8ecfa641a041279faf21aedd4e0 +R cdfb152187a9296f913494eaf2c01ee9 U drh -Z b72934b154618065708efb065dded2b6 +Z eba6c82b1c5d7dceb4b3e7cae88033fd diff --git a/manifest.uuid b/manifest.uuid index 580506624c..0bf1c4e0ed 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -8c0b2157f2a2f8ecfa641a041279faf21aedd4e0 \ No newline at end of file +0fc61f99b54bd269fcc011f448b9b971e902cb01 \ No newline at end of file