1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-11-15 11:41:13 +03:00

Merge changes to get FTS5 working with MSVC.

FossilOrigin-Name: 954231d29d60460d423ecb132bbfb725b0ea375a
This commit is contained in:
mistachkin
2015-06-26 17:10:12 +00:00
11 changed files with 83 additions and 35 deletions

View File

@@ -827,6 +827,7 @@ LIBOBJS0 = vdbe.lo parse.lo alter.lo analyze.lo attach.lo auth.lo \
fts3.lo fts3_aux.lo fts3_expr.lo fts3_hash.lo fts3_icu.lo \ fts3.lo fts3_aux.lo fts3_expr.lo fts3_hash.lo fts3_icu.lo \
fts3_porter.lo fts3_snippet.lo fts3_tokenizer.lo fts3_tokenizer1.lo \ fts3_porter.lo fts3_snippet.lo fts3_tokenizer.lo fts3_tokenizer1.lo \
fts3_tokenize_vtab.lo fts3_unicode.lo fts3_unicode2.lo fts3_write.lo \ fts3_tokenize_vtab.lo fts3_unicode.lo fts3_unicode2.lo fts3_write.lo \
fts5.lo \
func.lo global.lo hash.lo \ func.lo global.lo hash.lo \
icu.lo insert.lo journal.lo legacy.lo loadext.lo \ icu.lo insert.lo journal.lo legacy.lo loadext.lo \
main.lo malloc.lo mem0.lo mem1.lo mem2.lo mem3.lo mem5.lo \ main.lo malloc.lo mem0.lo mem1.lo mem2.lo mem3.lo mem5.lo \
@@ -1078,6 +1079,8 @@ TESTEXT = \
$(TOP)\ext\misc\eval.c \ $(TOP)\ext\misc\eval.c \
$(TOP)\ext\misc\fileio.c \ $(TOP)\ext\misc\fileio.c \
$(TOP)\ext\misc\fuzzer.c \ $(TOP)\ext\misc\fuzzer.c \
fts5.c \
$(TOP)\ext\fts5\fts5_tcl.c \
$(TOP)\ext\misc\ieee754.c \ $(TOP)\ext\misc\ieee754.c \
$(TOP)\ext\misc\nextchar.c \ $(TOP)\ext\misc\nextchar.c \
$(TOP)\ext\misc\percentile.c \ $(TOP)\ext\misc\percentile.c \
@@ -1653,6 +1656,47 @@ fts3_write.lo: $(TOP)\ext\fts3\fts3_write.c $(HDR) $(EXTHDR)
rtree.lo: $(TOP)\ext\rtree\rtree.c $(HDR) $(EXTHDR) rtree.lo: $(TOP)\ext\rtree\rtree.c $(HDR) $(EXTHDR)
$(LTCOMPILE) $(CORE_COMPILE_OPTS) $(NO_WARN) -DSQLITE_CORE -c $(TOP)\ext\rtree\rtree.c $(LTCOMPILE) $(CORE_COMPILE_OPTS) $(NO_WARN) -DSQLITE_CORE -c $(TOP)\ext\rtree\rtree.c
# FTS5 things
#
FTS5_SRC = \
$(TOP)\ext\fts5\fts5.h \
$(TOP)\ext\fts5\fts5Int.h \
$(TOP)\ext\fts5\fts5_aux.c \
$(TOP)\ext\fts5\fts5_buffer.c \
$(TOP)\ext\fts5\fts5_main.c \
$(TOP)\ext\fts5\fts5_config.c \
$(TOP)\ext\fts5\fts5_expr.c \
$(TOP)\ext\fts5\fts5_hash.c \
$(TOP)\ext\fts5\fts5_index.c \
fts5parse.c fts5parse.h \
$(TOP)\ext\fts5\fts5_storage.c \
$(TOP)\ext\fts5\fts5_tokenize.c \
$(TOP)\ext\fts5\fts5_unicode2.c \
$(TOP)\ext\fts5\fts5_varint.c \
$(TOP)\ext\fts5\fts5_vocab.c
fts5parse.c: $(TOP)\ext\fts5\fts5parse.y lemon.exe
copy $(TOP)\ext\fts5\fts5parse.y .
del /Q fts5parse.h 2>NUL
.\lemon.exe $(REQ_FEATURE_FLAGS) $(OPT_FEATURE_FLAGS) $(OPTS) fts5parse.y
move fts5parse.c fts5parse.c.orig
echo #ifdef SQLITE_ENABLE_FTS5 > $@
type fts5parse.c.orig \
| $(NAWK) "/.*/ { gsub(/yy/,\"fts5yy\");print }" \
| $(NAWK) "/.*/ { gsub(/YY/,\"fts5YY\");print }" \
| $(NAWK) "/.*/ { gsub(/TOKEN/,\"FTS5TOKEN\");print }" >> $@
echo #endif /* SQLITE_ENABLE_FTS5 */ >> $@
fts5parse.h: fts5parse.c
fts5.c: $(FTS5_SRC)
$(TCLSH_CMD) $(TOP)\ext\fts5\tool\mkfts5c.tcl
fts5.lo: fts5.c $(HDR) $(EXTHDR)
$(LTCOMPILE) $(NO_WARN) -DSQLITE_ENABLE_FTS5 -c fts5.c
fts5.dll: fts5.lo
$(LD) $(LDFLAGS) $(LTLINKOPTS) $(LTLIBPATHS) /DLL /OUT:$@ fts5.lo
# Rules to build the 'testfixture' application. # Rules to build the 'testfixture' application.
# #
@@ -1792,6 +1836,7 @@ clean:
del /Q sqlite3_analyzer.exe sqlite3_analyzer.c 2>NUL del /Q sqlite3_analyzer.exe sqlite3_analyzer.c 2>NUL
del /Q sqlite-*-output.vsix 2>NUL del /Q sqlite-*-output.vsix 2>NUL
del /Q fuzzershell.exe fuzzcheck.exe sqldiff.exe 2>NUL del /Q fuzzershell.exe fuzzcheck.exe sqldiff.exe 2>NUL
del /Q fts5.c fts5parse.* 2>NUL
# Dynamic link library section. # Dynamic link library section.
# #

View File

@@ -204,7 +204,7 @@ void sqlite3Fts5BufferSet(int*, Fts5Buffer*, int, const u8*);
void sqlite3Fts5BufferAppendPrintf(int *, Fts5Buffer*, char *zFmt, ...); void sqlite3Fts5BufferAppendPrintf(int *, Fts5Buffer*, char *zFmt, ...);
void sqlite3Fts5BufferAppend32(int*, Fts5Buffer*, int); void sqlite3Fts5BufferAppend32(int*, Fts5Buffer*, int);
char *sqlite3Fts5Mprintf(int *pRc, char *zFmt, ...); char *sqlite3Fts5Mprintf(int *pRc, const char *zFmt, ...);
#define fts5BufferZero(x) sqlite3Fts5BufferZero(x) #define fts5BufferZero(x) sqlite3Fts5BufferZero(x)
#define fts5BufferGrow(a,b,c) sqlite3Fts5BufferGrow(a,b,c) #define fts5BufferGrow(a,b,c) sqlite3Fts5BufferGrow(a,b,c)

View File

@@ -125,7 +125,7 @@ void sqlite3Fts5BufferAppendPrintf(
} }
} }
char *sqlite3Fts5Mprintf(int *pRc, char *zFmt, ...){ char *sqlite3Fts5Mprintf(int *pRc, const char *zFmt, ...){
char *zRet = 0; char *zRet = 0;
if( *pRc==SQLITE_OK ){ if( *pRc==SQLITE_OK ){
va_list ap; va_list ap;

View File

@@ -602,7 +602,6 @@ int sqlite3Fts5ConfigDeclareVtab(Fts5Config *pConfig){
int i; int i;
int rc = SQLITE_OK; int rc = SQLITE_OK;
char *zSql; char *zSql;
char *zOld;
zSql = sqlite3Fts5Mprintf(&rc, "CREATE TABLE x("); zSql = sqlite3Fts5Mprintf(&rc, "CREATE TABLE x(");
for(i=0; zSql && i<pConfig->nCol; i++){ for(i=0; zSql && i<pConfig->nCol; i++){

View File

@@ -1046,7 +1046,7 @@ static int fts5ExprNodeNext(
case FTS5_OR: { case FTS5_OR: {
int i; int i;
int iLast = pNode->iRowid; i64 iLast = pNode->iRowid;
for(i=0; rc==SQLITE_OK && i<pNode->nChild; i++){ for(i=0; rc==SQLITE_OK && i<pNode->nChild; i++){
Fts5ExprNode *p1 = pNode->apChild[i]; Fts5ExprNode *p1 = pNode->apChild[i];
@@ -1915,7 +1915,7 @@ static void fts5ExprFunction(
sqlite3_result_error_code(pCtx, rc); sqlite3_result_error_code(pCtx, rc);
} }
} }
sqlite3_free(azConfig); sqlite3_free((void *)azConfig);
sqlite3Fts5ConfigFree(pConfig); sqlite3Fts5ConfigFree(pConfig);
sqlite3Fts5ExprFree(pExpr); sqlite3Fts5ExprFree(pExpr);
} }

View File

@@ -3549,15 +3549,15 @@ static void fts5IndexAutomerge(
){ ){
if( p->rc==SQLITE_OK && p->pConfig->nAutomerge>0 ){ if( p->rc==SQLITE_OK && p->pConfig->nAutomerge>0 ){
Fts5Structure *pStruct = *ppStruct; Fts5Structure *pStruct = *ppStruct;
i64 nWrite; /* Initial value of write-counter */ u64 nWrite; /* Initial value of write-counter */
int nWork; /* Number of work-quanta to perform */ int nWork; /* Number of work-quanta to perform */
int nRem; /* Number of leaf pages left to write */ int nRem; /* Number of leaf pages left to write */
/* Update the write-counter. While doing so, set nWork. */ /* Update the write-counter. While doing so, set nWork. */
nWrite = pStruct->nWriteCounter; nWrite = pStruct->nWriteCounter;
nWork = ((nWrite + nLeaf) / p->nWorkUnit) - (nWrite / p->nWorkUnit); nWork = (int)(((nWrite + nLeaf) / p->nWorkUnit) - (nWrite / p->nWorkUnit));
pStruct->nWriteCounter += nLeaf; pStruct->nWriteCounter += nLeaf;
nRem = p->nWorkUnit * nWork * pStruct->nLevel; nRem = (int)(p->nWorkUnit * nWork * pStruct->nLevel);
fts5IndexMerge(p, ppStruct, nRem); fts5IndexMerge(p, ppStruct, nRem);
} }
@@ -4552,11 +4552,11 @@ int sqlite3Fts5IndexSetCookie(Fts5Index *p, int iNew){
int rc; /* Return code */ int rc; /* Return code */
Fts5Config *pConfig = p->pConfig; /* Configuration object */ Fts5Config *pConfig = p->pConfig; /* Configuration object */
u8 aCookie[4]; /* Binary representation of iNew */ u8 aCookie[4]; /* Binary representation of iNew */
sqlite3_blob *pBlob = 0;
assert( p->rc==SQLITE_OK ); assert( p->rc==SQLITE_OK );
sqlite3Fts5Put32(aCookie, iNew); sqlite3Fts5Put32(aCookie, iNew);
sqlite3_blob *pBlob = 0;
rc = sqlite3_blob_open(pConfig->db, pConfig->zDb, p->zDataTbl, rc = sqlite3_blob_open(pConfig->db, pConfig->zDb, p->zDataTbl,
"block", FTS5_STRUCTURE_ROWID, 1, &pBlob "block", FTS5_STRUCTURE_ROWID, 1, &pBlob
); );
@@ -4787,7 +4787,7 @@ static void fts5TestTerm(
fts5BufferSet(&rc, pPrev, n, (const u8*)z); fts5BufferSet(&rc, pPrev, n, (const u8*)z);
}else }else
if( rc==SQLITE_OK && (pPrev->n!=n || memcmp(pPrev->p, z, n)) ){ if( rc==SQLITE_OK && (pPrev->n!=n || memcmp(pPrev->p, z, n)) ){
u32 cksum3 = *pCksum; u64 cksum3 = *pCksum;
const char *zTerm = (const char*)&pPrev->p[1]; /* term sans prefix-byte */ const char *zTerm = (const char*)&pPrev->p[1]; /* term sans prefix-byte */
int nTerm = pPrev->n-1; /* Size of zTerm in bytes */ int nTerm = pPrev->n-1; /* Size of zTerm in bytes */
int iIdx = (pPrev->p[0] - FTS5_MAIN_PREFIX); int iIdx = (pPrev->p[0] - FTS5_MAIN_PREFIX);

View File

@@ -1387,8 +1387,8 @@ static int fts5UpdateMethod(
rc = sqlite3Fts5StorageDelete(pTab->pStorage, iDel); rc = sqlite3Fts5StorageDelete(pTab->pStorage, iDel);
} }
}else{ }else{
assert( nArg>1 );
sqlite3_value *pCmd = apVal[2 + pConfig->nCol]; sqlite3_value *pCmd = apVal[2 + pConfig->nCol];
assert( nArg>1 );
if( SQLITE_NULL!=sqlite3_value_type(pCmd) ){ if( SQLITE_NULL!=sqlite3_value_type(pCmd) ){
const char *z = (const char*)sqlite3_value_text(pCmd); const char *z = (const char*)sqlite3_value_text(pCmd);
if( pConfig->eContent!=FTS5_CONTENT_NORMAL if( pConfig->eContent!=FTS5_CONTENT_NORMAL
@@ -2224,7 +2224,7 @@ static void fts5Fts5Func(
sqlite3_result_blob(pCtx, buf, sizeof(pGlobal), SQLITE_TRANSIENT); sqlite3_result_blob(pCtx, buf, sizeof(pGlobal), SQLITE_TRANSIENT);
} }
#ifdef _WIN32_ #ifdef _WIN32
__declspec(dllexport) __declspec(dllexport)
#endif #endif
int sqlite3_fts5_init( int sqlite3_fts5_init(

View File

@@ -158,8 +158,10 @@ static int fts5ExecPrintf(
){ ){
int rc; int rc;
va_list ap; /* ... printf arguments */ va_list ap; /* ... printf arguments */
char *zSql;
va_start(ap, zFormat); va_start(ap, zFormat);
char *zSql = sqlite3_vmprintf(zFormat, ap); zSql = sqlite3_vmprintf(zFormat, ap);
if( zSql==0 ){ if( zSql==0 ){
rc = SQLITE_NOMEM; rc = SQLITE_NOMEM;

View File

@@ -529,7 +529,7 @@ static void xF5tFunction(
static void xF5tDestroy(void *pCtx){ static void xF5tDestroy(void *pCtx){
F5tFunction *p = (F5tFunction*)pCtx; F5tFunction *p = (F5tFunction*)pCtx;
Tcl_DecrRefCount(p->pScript); Tcl_DecrRefCount(p->pScript);
ckfree(p); ckfree((char *)p);
} }
/* /*
@@ -724,7 +724,8 @@ static int f5tTokenizerCreate(
Tcl_DecrRefCount(pEval); Tcl_DecrRefCount(pEval);
if( rc==TCL_OK ){ if( rc==TCL_OK ){
F5tTokenizerInstance *pInst = ckalloc(sizeof(F5tTokenizerInstance)); F5tTokenizerInstance *pInst;
pInst = (F5tTokenizerInstance*)ckalloc(sizeof(F5tTokenizerInstance));
memset(pInst, 0, sizeof(F5tTokenizerInstance)); memset(pInst, 0, sizeof(F5tTokenizerInstance));
pInst->interp = pMod->interp; pInst->interp = pMod->interp;
pInst->pScript = Tcl_GetObjResult(pMod->interp); pInst->pScript = Tcl_GetObjResult(pMod->interp);
@@ -740,7 +741,7 @@ static int f5tTokenizerCreate(
static void f5tTokenizerDelete(Fts5Tokenizer *p){ static void f5tTokenizerDelete(Fts5Tokenizer *p){
F5tTokenizerInstance *pInst = (F5tTokenizerInstance*)p; F5tTokenizerInstance *pInst = (F5tTokenizerInstance*)p;
Tcl_DecrRefCount(pInst->pScript); Tcl_DecrRefCount(pInst->pScript);
ckfree(pInst); ckfree((char *)pInst);
} }
static int f5tTokenizerTokenize( static int f5tTokenizerTokenize(
@@ -816,7 +817,7 @@ static int f5tTokenizerReturn(
static void f5tDelTokenizer(void *pCtx){ static void f5tDelTokenizer(void *pCtx){
F5tTokenizerModule *pMod = (F5tTokenizerModule*)pCtx; F5tTokenizerModule *pMod = (F5tTokenizerModule*)pCtx;
Tcl_DecrRefCount(pMod->pScript); Tcl_DecrRefCount(pMod->pScript);
ckfree(pMod); ckfree((char *)pMod);
} }
/* /*
@@ -964,7 +965,7 @@ int Fts5tcl_Init(Tcl_Interp *interp){
int i; int i;
F5tTokenizerContext *pContext; F5tTokenizerContext *pContext;
pContext = ckalloc(sizeof(F5tTokenizerContext)); pContext = (F5tTokenizerContext*)ckalloc(sizeof(F5tTokenizerContext));
memset(pContext, 0, sizeof(*pContext)); memset(pContext, 0, sizeof(*pContext));
for(i=0; i<sizeof(aCmd)/sizeof(aCmd[0]); i++){ for(i=0; i<sizeof(aCmd)/sizeof(aCmd[0]); i++){

View File

@@ -1,9 +1,9 @@
C Remove\sfts5\sinitialization\scode\sfrom\score\sfile\smain.c. C Merge\schanges\sto\sget\sFTS5\sworking\swith\sMSVC.
D 2015-06-26T16:42:17.368 D 2015-06-26T17:10:12.989
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
F Makefile.in 285a0a234ed7610d431d91671c136098c2bd86a9 F Makefile.in 285a0a234ed7610d431d91671c136098c2bd86a9
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
F Makefile.msc b7db9ccbbad1c495b98e5326a06cac03aa206127 F Makefile.msc de7668a4f537f91bdb185e7194a798b1d59f101f
F Makefile.vxworks e1b65dea203f054e71653415bd8f96dcaed47858 F Makefile.vxworks e1b65dea203f054e71653415bd8f96dcaed47858
F README.md 8ecc12493ff9f820cdea6520a9016001cb2e59b7 F README.md 8ecc12493ff9f820cdea6520a9016001cb2e59b7
F VERSION ce0ae95abd7121c534f6917c1c8f2b70d9acd4db F VERSION ce0ae95abd7121c534f6917c1c8f2b70d9acd4db
@@ -106,16 +106,16 @@ F ext/fts3/unicode/mkunicode.tcl ed0534dd51efce39878bce33944c6073d37a1e20
F ext/fts3/unicode/parseunicode.tcl da577d1384810fb4e2b209bf3313074353193e95 F ext/fts3/unicode/parseunicode.tcl da577d1384810fb4e2b209bf3313074353193e95
F ext/fts5/extract_api_docs.tcl 55a6d648d516f35d9a1e580ac00de27154e1904a F ext/fts5/extract_api_docs.tcl 55a6d648d516f35d9a1e580ac00de27154e1904a
F ext/fts5/fts5.h 81d1a92fc2b4bd477af7e4e0b38b456f3e199fba F ext/fts5/fts5.h 81d1a92fc2b4bd477af7e4e0b38b456f3e199fba
F ext/fts5/fts5Int.h 41e9ed1f073770f660b1b59116357f504a8c5ff1 F ext/fts5/fts5Int.h 918e947c0c20122ed5eb9ea695d83c6c8cf7239a
F ext/fts5/fts5_aux.c d53f00f31ad615ca4f139dd8751f9041afa00971 F ext/fts5/fts5_aux.c d53f00f31ad615ca4f139dd8751f9041afa00971
F ext/fts5/fts5_buffer.c be0dc80a9406151b350be27c7ec2956722578771 F ext/fts5/fts5_buffer.c 7428b0bcb257641cbecc3bacce7f40686cf99f36
F ext/fts5/fts5_config.c c232d181d6324f0ae3a2a31319924473999e5816 F ext/fts5/fts5_config.c d40da53f5e94214c553b2af3d6fd9aebac5f3f05
F ext/fts5/fts5_expr.c 549bda1f7edcf10365fbfbc002bdea1be3c287bb F ext/fts5/fts5_expr.c 3386ab0a71dbab7e1259c3b16d6113c97d14123e
F ext/fts5/fts5_hash.c c1cfdb2cae0fad00b06fae38a40eaf9261563ccc F ext/fts5/fts5_hash.c c1cfdb2cae0fad00b06fae38a40eaf9261563ccc
F ext/fts5/fts5_index.c 438b245e9e44be3cfa848c71351a4e769b75876a F ext/fts5/fts5_index.c 0c5a5218eb9fddd65c7d5bbad72c383d102c9648
F ext/fts5/fts5_main.c 35e90d3d8fafe4c936f232108e891d5f9a6294ca F ext/fts5/fts5_main.c c5b2a219d65967c07fd1bc8fd45206863a2fe360
F ext/fts5/fts5_storage.c b2fa301fce865d582d367a5e1bb438fe60c03cb5 F ext/fts5/fts5_storage.c 3e672a0d35f63979556903861b324e7b8932cecc
F ext/fts5/fts5_tcl.c 7ea165878e4ae3598e89acd470a0ee1b5a00e33c F ext/fts5/fts5_tcl.c b82f13f73a30f0959f539743f8818bece994a970
F ext/fts5/fts5_tokenize.c 97251d68d7a6a9415bde1203f9382864dfc1f989 F ext/fts5/fts5_tokenize.c 97251d68d7a6a9415bde1203f9382864dfc1f989
F ext/fts5/fts5_unicode2.c da3cf712f05cd8347c8c5bc00964cc0361c88da9 F ext/fts5/fts5_unicode2.c da3cf712f05cd8347c8c5bc00964cc0361c88da9
F ext/fts5/fts5_varint.c 366452037bf9a000c351374b489badc1b3541796 F ext/fts5/fts5_varint.c 366452037bf9a000c351374b489badc1b3541796
@@ -1364,7 +1364,8 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
P 3175220747f5d4dadd17e09fb1899dc782c90926 P c91a93b343b4d3b1a19afdb5d23d1c508f9779d2 bfcd16089cf8c65130c011a9718bf7812685c841
R 91fd07ffaf7094308b4ec5a4e0e61dc1 R 297861c6724b6a9194bdf2ab25858763
U dan T +closed bfcd16089cf8c65130c011a9718bf7812685c841
Z ca6474591f774c998709d70d57deb075 U mistachkin
Z d2f82b98bab3ebc4b4555fb7502228b7

View File

@@ -1 +1 @@
c91a93b343b4d3b1a19afdb5d23d1c508f9779d2 954231d29d60460d423ecb132bbfb725b0ea375a