mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-24 22:22:08 +03:00
Changes fts3 to use only sqlite3_malloc() and not system malloc.
Ticket #2762. (CVS 4554) FossilOrigin-Name: 460af6bb668094c99a1d4dc1540b44b6d1d036b6
This commit is contained in:
114
ext/fts3/fts3.c
114
ext/fts3/fts3.c
@ -453,13 +453,13 @@ static void dataBufferInit(DataBuffer *pBuffer, int nCapacity){
|
||||
assert( nCapacity>=0 );
|
||||
pBuffer->nData = 0;
|
||||
pBuffer->nCapacity = nCapacity;
|
||||
pBuffer->pData = nCapacity==0 ? NULL : malloc(nCapacity);
|
||||
pBuffer->pData = nCapacity==0 ? NULL : sqlite3_malloc(nCapacity);
|
||||
}
|
||||
static void dataBufferReset(DataBuffer *pBuffer){
|
||||
pBuffer->nData = 0;
|
||||
}
|
||||
static void dataBufferDestroy(DataBuffer *pBuffer){
|
||||
if( pBuffer->pData!=NULL ) free(pBuffer->pData);
|
||||
if( pBuffer->pData!=NULL ) sqlite3_free(pBuffer->pData);
|
||||
SCRAMBLE(pBuffer);
|
||||
}
|
||||
static void dataBufferExpand(DataBuffer *pBuffer, int nAddCapacity){
|
||||
@ -470,7 +470,7 @@ static void dataBufferExpand(DataBuffer *pBuffer, int nAddCapacity){
|
||||
*/
|
||||
if( pBuffer->nData+nAddCapacity>pBuffer->nCapacity ){
|
||||
pBuffer->nCapacity = pBuffer->nData+nAddCapacity;
|
||||
pBuffer->pData = realloc(pBuffer->pData, pBuffer->nCapacity);
|
||||
pBuffer->pData = sqlite3_realloc(pBuffer->pData, pBuffer->nCapacity);
|
||||
}
|
||||
}
|
||||
static void dataBufferAppend(DataBuffer *pBuffer,
|
||||
@ -1065,7 +1065,7 @@ static void dlcAddPos(DLCollector *pCollector, int iColumn, int iPos,
|
||||
}
|
||||
|
||||
static DLCollector *dlcNew(sqlite_int64 iDocid, DocListType iType){
|
||||
DLCollector *pCollector = malloc(sizeof(DLCollector));
|
||||
DLCollector *pCollector = sqlite3_malloc(sizeof(DLCollector));
|
||||
dataBufferInit(&pCollector->b, 0);
|
||||
dlwInit(&pCollector->dlw, iType, &pCollector->b);
|
||||
plwInit(&pCollector->plw, &pCollector->dlw, iDocid);
|
||||
@ -1076,7 +1076,7 @@ static void dlcDelete(DLCollector *pCollector){
|
||||
dlwDestroy(&pCollector->dlw);
|
||||
dataBufferDestroy(&pCollector->b);
|
||||
SCRAMBLE(pCollector);
|
||||
free(pCollector);
|
||||
sqlite3_free(pCollector);
|
||||
}
|
||||
|
||||
|
||||
@ -1708,7 +1708,7 @@ static void docListExceptMerge(
|
||||
}
|
||||
|
||||
static char *string_dup_n(const char *s, int n){
|
||||
char *str = malloc(n + 1);
|
||||
char *str = sqlite3_malloc(n + 1);
|
||||
memcpy(str, s, n);
|
||||
str[n] = '\0';
|
||||
return str;
|
||||
@ -1741,7 +1741,7 @@ static char *string_format(const char *zFormat,
|
||||
}
|
||||
len += 1; /* for null terminator */
|
||||
|
||||
r = result = malloc(len);
|
||||
r = result = sqlite3_malloc(len);
|
||||
for(p = zFormat; *p; ++p){
|
||||
if( *p=='%' ){
|
||||
memcpy(r, zDb, nDb);
|
||||
@ -1764,7 +1764,7 @@ static int sql_exec(sqlite3 *db, const char *zDb, const char *zName,
|
||||
int rc;
|
||||
TRACE(("FTS3 sql: %s\n", zCommand));
|
||||
rc = sqlite3_exec(db, zCommand, NULL, 0, NULL);
|
||||
free(zCommand);
|
||||
sqlite3_free(zCommand);
|
||||
return rc;
|
||||
}
|
||||
|
||||
@ -1774,7 +1774,7 @@ static int sql_prepare(sqlite3 *db, const char *zDb, const char *zName,
|
||||
int rc;
|
||||
TRACE(("FTS3 prepare: %s\n", zCommand));
|
||||
rc = sqlite3_prepare_v2(db, zCommand, -1, ppStmt, NULL);
|
||||
free(zCommand);
|
||||
sqlite3_free(zCommand);
|
||||
return rc;
|
||||
}
|
||||
|
||||
@ -2085,7 +2085,7 @@ static int sql_get_statement(fulltext_vtab *v, fulltext_statement iStmt,
|
||||
}
|
||||
rc = sql_prepare(v->db, v->zDb, v->zName, &v->pFulltextStatements[iStmt],
|
||||
zStmt);
|
||||
if( zStmt != fulltext_zStatement[iStmt]) free((void *) zStmt);
|
||||
if( zStmt != fulltext_zStatement[iStmt]) sqlite3_free((void *) zStmt);
|
||||
if( rc!=SQLITE_OK ) return rc;
|
||||
} else {
|
||||
int rc = sqlite3_reset(v->pFulltextStatements[iStmt]);
|
||||
@ -2173,9 +2173,9 @@ static void freeStringArray(int nString, const char **pString){
|
||||
int i;
|
||||
|
||||
for (i=0 ; i < nString ; ++i) {
|
||||
if( pString[i]!=NULL ) free((void *) pString[i]);
|
||||
if( pString[i]!=NULL ) sqlite3_free((void *) pString[i]);
|
||||
}
|
||||
free((void *) pString);
|
||||
sqlite3_free((void *) pString);
|
||||
}
|
||||
|
||||
/* select * from %_content where docid = [iDocid]
|
||||
@ -2202,7 +2202,7 @@ static int content_select(fulltext_vtab *v, sqlite_int64 iDocid,
|
||||
rc = sqlite3_step(s);
|
||||
if( rc!=SQLITE_ROW ) return rc;
|
||||
|
||||
values = (const char **) malloc(v->nColumn * sizeof(const char *));
|
||||
values = (const char **) sqlite3_malloc(v->nColumn * sizeof(const char *));
|
||||
for(i=0; i<v->nColumn; ++i){
|
||||
if( sqlite3_column_type(s, i)==SQLITE_NULL ){
|
||||
values[i] = NULL;
|
||||
@ -2445,12 +2445,12 @@ static void fulltext_vtab_destroy(fulltext_vtab *v){
|
||||
|
||||
clearPendingTerms(v);
|
||||
|
||||
free(v->azColumn);
|
||||
sqlite3_free(v->azColumn);
|
||||
for(i = 0; i < v->nColumn; ++i) {
|
||||
sqlite3_free(v->azContentColumn[i]);
|
||||
}
|
||||
free(v->azContentColumn);
|
||||
free(v);
|
||||
sqlite3_free(v->azContentColumn);
|
||||
sqlite3_free(v);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -2561,7 +2561,7 @@ typedef struct Token {
|
||||
*/
|
||||
static char **tokenizeString(const char *z, int *pnToken){
|
||||
int nToken = 0;
|
||||
Token *aToken = malloc( strlen(z) * sizeof(aToken[0]) );
|
||||
Token *aToken = sqlite3_malloc( strlen(z) * sizeof(aToken[0]) );
|
||||
int n = 1;
|
||||
int e, i;
|
||||
int totalSize = 0;
|
||||
@ -2577,7 +2577,7 @@ static char **tokenizeString(const char *z, int *pnToken){
|
||||
}
|
||||
z += n;
|
||||
}
|
||||
azToken = (char**)malloc( nToken*sizeof(char*) + totalSize );
|
||||
azToken = (char**)sqlite3_malloc( nToken*sizeof(char*) + totalSize );
|
||||
zCopy = (char*)&azToken[nToken];
|
||||
nToken--;
|
||||
for(i=0; i<nToken; i++){
|
||||
@ -2588,7 +2588,7 @@ static char **tokenizeString(const char *z, int *pnToken){
|
||||
zCopy += n+1;
|
||||
}
|
||||
azToken[nToken] = 0;
|
||||
free(aToken);
|
||||
sqlite3_free(aToken);
|
||||
*pnToken = nToken;
|
||||
return azToken;
|
||||
}
|
||||
@ -2726,9 +2726,9 @@ typedef struct TableSpec {
|
||||
** Reclaim all of the memory used by a TableSpec
|
||||
*/
|
||||
static void clearTableSpec(TableSpec *p) {
|
||||
free(p->azColumn);
|
||||
free(p->azContentColumn);
|
||||
free(p->azTokenizer);
|
||||
sqlite3_free(p->azColumn);
|
||||
sqlite3_free(p->azContentColumn);
|
||||
sqlite3_free(p->azTokenizer);
|
||||
}
|
||||
|
||||
/* Parse a CREATE VIRTUAL TABLE statement, which looks like this:
|
||||
@ -2763,7 +2763,7 @@ static int parseSpec(TableSpec *pSpec, int argc, const char *const*argv,
|
||||
for(i=n=0; i<argc; i++){
|
||||
n += strlen(argv[i]) + 1;
|
||||
}
|
||||
azArg = malloc( sizeof(char*)*argc + n );
|
||||
azArg = sqlite3_malloc( sizeof(char*)*argc + n );
|
||||
if( azArg==0 ){
|
||||
return SQLITE_NOMEM;
|
||||
}
|
||||
@ -2808,7 +2808,7 @@ static int parseSpec(TableSpec *pSpec, int argc, const char *const*argv,
|
||||
** for the convenience of people who might examine the generated
|
||||
** %_content table and wonder what the columns are used for.
|
||||
*/
|
||||
pSpec->azContentColumn = malloc( pSpec->nColumn * sizeof(char *) );
|
||||
pSpec->azContentColumn = sqlite3_malloc( pSpec->nColumn * sizeof(char *) );
|
||||
if( pSpec->azContentColumn==0 ){
|
||||
clearTableSpec(pSpec);
|
||||
return SQLITE_NOMEM;
|
||||
@ -2880,7 +2880,7 @@ static int constructVtab(
|
||||
char const *zTok; /* Name of tokenizer to use for this fts table */
|
||||
int nTok; /* Length of zTok, including nul terminator */
|
||||
|
||||
v = (fulltext_vtab *) malloc(sizeof(fulltext_vtab));
|
||||
v = (fulltext_vtab *) sqlite3_malloc(sizeof(fulltext_vtab));
|
||||
if( v==0 ) return SQLITE_NOMEM;
|
||||
CLEAR(v);
|
||||
/* sqlite will initialize v->base */
|
||||
@ -3073,12 +3073,16 @@ static int fulltextDestroy(sqlite3_vtab *pVTab){
|
||||
static int fulltextOpen(sqlite3_vtab *pVTab, sqlite3_vtab_cursor **ppCursor){
|
||||
fulltext_cursor *c;
|
||||
|
||||
c = (fulltext_cursor *) calloc(sizeof(fulltext_cursor), 1);
|
||||
/* sqlite will initialize c->base */
|
||||
*ppCursor = &c->base;
|
||||
TRACE(("FTS3 Open %p: %p\n", pVTab, c));
|
||||
|
||||
return SQLITE_OK;
|
||||
c = (fulltext_cursor *) sqlite3_malloc(sizeof(fulltext_cursor));
|
||||
if( c ){
|
||||
memset(c, 0, sizeof(fulltext_cursor));
|
||||
/* sqlite will initialize c->base */
|
||||
*ppCursor = &c->base;
|
||||
TRACE(("FTS3 Open %p: %p\n", pVTab, c));
|
||||
return SQLITE_OK;
|
||||
}else{
|
||||
return SQLITE_NOMEM;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -3087,9 +3091,9 @@ static int fulltextOpen(sqlite3_vtab *pVTab, sqlite3_vtab_cursor **ppCursor){
|
||||
static void queryClear(Query *q){
|
||||
int i;
|
||||
for(i = 0; i < q->nTerms; ++i){
|
||||
free(q->pTerms[i].pTerm);
|
||||
sqlite3_free(q->pTerms[i].pTerm);
|
||||
}
|
||||
free(q->pTerms);
|
||||
sqlite3_free(q->pTerms);
|
||||
CLEAR(q);
|
||||
}
|
||||
|
||||
@ -3097,9 +3101,9 @@ static void queryClear(Query *q){
|
||||
** Snippet
|
||||
*/
|
||||
static void snippetClear(Snippet *p){
|
||||
free(p->aMatch);
|
||||
free(p->zOffset);
|
||||
free(p->zSnippet);
|
||||
sqlite3_free(p->aMatch);
|
||||
sqlite3_free(p->zOffset);
|
||||
sqlite3_free(p->zSnippet);
|
||||
CLEAR(p);
|
||||
}
|
||||
/*
|
||||
@ -3115,7 +3119,7 @@ static void snippetAppendMatch(
|
||||
struct snippetMatch *pMatch;
|
||||
if( p->nMatch+1>=p->nAlloc ){
|
||||
p->nAlloc = p->nAlloc*2 + 10;
|
||||
p->aMatch = realloc(p->aMatch, p->nAlloc*sizeof(p->aMatch[0]) );
|
||||
p->aMatch = sqlite3_realloc(p->aMatch, p->nAlloc*sizeof(p->aMatch[0]) );
|
||||
if( p->aMatch==0 ){
|
||||
p->nMatch = 0;
|
||||
p->nAlloc = 0;
|
||||
@ -3450,7 +3454,7 @@ static void snippetText(
|
||||
int iMatch;
|
||||
|
||||
|
||||
free(pCursor->snippet.zSnippet);
|
||||
sqlite3_free(pCursor->snippet.zSnippet);
|
||||
pCursor->snippet.zSnippet = 0;
|
||||
aMatch = pCursor->snippet.aMatch;
|
||||
nMatch = pCursor->snippet.nMatch;
|
||||
@ -3552,7 +3556,7 @@ static int fulltextClose(sqlite3_vtab_cursor *pCursor){
|
||||
snippetClear(&c->snippet);
|
||||
if( c->result.nData!=0 ) dlrDestroy(&c->reader);
|
||||
dataBufferDestroy(&c->result);
|
||||
free(c);
|
||||
sqlite3_free(c);
|
||||
return SQLITE_OK;
|
||||
}
|
||||
|
||||
@ -3670,14 +3674,14 @@ static int docListOfTerm(
|
||||
static void queryAdd(Query *q, const char *pTerm, int nTerm){
|
||||
QueryTerm *t;
|
||||
++q->nTerms;
|
||||
q->pTerms = realloc(q->pTerms, q->nTerms * sizeof(q->pTerms[0]));
|
||||
q->pTerms = sqlite3_realloc(q->pTerms, q->nTerms * sizeof(q->pTerms[0]));
|
||||
if( q->pTerms==0 ){
|
||||
q->nTerms = 0;
|
||||
return;
|
||||
}
|
||||
t = &q->pTerms[q->nTerms - 1];
|
||||
CLEAR(t);
|
||||
t->pTerm = malloc(nTerm+1);
|
||||
t->pTerm = sqlite3_malloc(nTerm+1);
|
||||
memcpy(t->pTerm, pTerm, nTerm);
|
||||
t->pTerm[nTerm] = 0;
|
||||
t->nTerm = nTerm;
|
||||
@ -4296,18 +4300,20 @@ typedef struct InteriorBlock {
|
||||
|
||||
static InteriorBlock *interiorBlockNew(int iHeight, sqlite_int64 iChildBlock,
|
||||
const char *pTerm, int nTerm){
|
||||
InteriorBlock *block = calloc(1, sizeof(InteriorBlock));
|
||||
InteriorBlock *block = sqlite3_malloc(sizeof(InteriorBlock));
|
||||
char c[VARINT_MAX+VARINT_MAX];
|
||||
int n;
|
||||
|
||||
dataBufferInit(&block->term, 0);
|
||||
dataBufferReplace(&block->term, pTerm, nTerm);
|
||||
|
||||
n = putVarint(c, iHeight);
|
||||
n += putVarint(c+n, iChildBlock);
|
||||
dataBufferInit(&block->data, INTERIOR_MAX);
|
||||
dataBufferReplace(&block->data, c, n);
|
||||
if( block ){
|
||||
memset(block, 0, sizeof(*block));
|
||||
dataBufferInit(&block->term, 0);
|
||||
dataBufferReplace(&block->term, pTerm, nTerm);
|
||||
|
||||
n = putVarint(c, iHeight);
|
||||
n += putVarint(c+n, iChildBlock);
|
||||
dataBufferInit(&block->data, INTERIOR_MAX);
|
||||
dataBufferReplace(&block->data, c, n);
|
||||
}
|
||||
return block;
|
||||
}
|
||||
|
||||
@ -4472,11 +4478,11 @@ static int interiorWriterDestroy(InteriorWriter *pWriter){
|
||||
block = block->next;
|
||||
dataBufferDestroy(&b->term);
|
||||
dataBufferDestroy(&b->data);
|
||||
free(b);
|
||||
sqlite3_free(b);
|
||||
}
|
||||
if( pWriter->parentWriter!=NULL ){
|
||||
interiorWriterDestroy(pWriter->parentWriter);
|
||||
free(pWriter->parentWriter);
|
||||
sqlite3_free(pWriter->parentWriter);
|
||||
}
|
||||
dataBufferDestroy(&pWriter->term);
|
||||
SCRAMBLE(pWriter);
|
||||
@ -4510,7 +4516,7 @@ static int interiorWriterRootInfo(fulltext_vtab *v, InteriorWriter *pWriter,
|
||||
if( rc!=SQLITE_OK ) return rc;
|
||||
*piEndBlockid = iBlockid;
|
||||
|
||||
pWriter->parentWriter = malloc(sizeof(*pWriter->parentWriter));
|
||||
pWriter->parentWriter = sqlite3_malloc(sizeof(*pWriter->parentWriter));
|
||||
interiorWriterInit(pWriter->iHeight+1,
|
||||
block->term.pData, block->term.nData,
|
||||
iBlockid, pWriter->parentWriter);
|
||||
@ -5900,7 +5906,7 @@ static int writeZeroSegment(fulltext_vtab *v, fts3Hash *pTerms){
|
||||
if( rc!=SQLITE_OK ) return rc;
|
||||
|
||||
n = fts3HashCount(pTerms);
|
||||
pData = malloc(n*sizeof(TermData));
|
||||
pData = sqlite3_malloc(n*sizeof(TermData));
|
||||
|
||||
for(i = 0, e = fts3HashFirst(pTerms); e; i++, e = fts3HashNext(e)){
|
||||
assert( i<n );
|
||||
@ -5931,7 +5937,7 @@ static int writeZeroSegment(fulltext_vtab *v, fts3Hash *pTerms){
|
||||
|
||||
err:
|
||||
dataBufferDestroy(&dl);
|
||||
free(pData);
|
||||
sqlite3_free(pData);
|
||||
leafWriterDestroy(&writer);
|
||||
return rc;
|
||||
}
|
||||
|
@ -66,9 +66,9 @@ static int porterCreate(
|
||||
sqlite3_tokenizer **ppTokenizer
|
||||
){
|
||||
porter_tokenizer *t;
|
||||
t = (porter_tokenizer *) calloc(sizeof(*t), 1);
|
||||
t = (porter_tokenizer *) sqlite3_malloc(sizeof(*t));
|
||||
if( t==NULL ) return SQLITE_NOMEM;
|
||||
|
||||
memset(t, 0, sizeof(*t));
|
||||
*ppTokenizer = &t->base;
|
||||
return SQLITE_OK;
|
||||
}
|
||||
@ -77,7 +77,7 @@ static int porterCreate(
|
||||
** Destroy a tokenizer
|
||||
*/
|
||||
static int porterDestroy(sqlite3_tokenizer *pTokenizer){
|
||||
free(pTokenizer);
|
||||
sqlite3_free(pTokenizer);
|
||||
return SQLITE_OK;
|
||||
}
|
||||
|
||||
@ -94,7 +94,7 @@ static int porterOpen(
|
||||
){
|
||||
porter_tokenizer_cursor *c;
|
||||
|
||||
c = (porter_tokenizer_cursor *) malloc(sizeof(*c));
|
||||
c = (porter_tokenizer_cursor *) sqlite3_malloc(sizeof(*c));
|
||||
if( c==NULL ) return SQLITE_NOMEM;
|
||||
|
||||
c->zInput = zInput;
|
||||
@ -120,8 +120,8 @@ static int porterOpen(
|
||||
*/
|
||||
static int porterClose(sqlite3_tokenizer_cursor *pCursor){
|
||||
porter_tokenizer_cursor *c = (porter_tokenizer_cursor *) pCursor;
|
||||
free(c->zToken);
|
||||
free(c);
|
||||
sqlite3_free(c->zToken);
|
||||
sqlite3_free(c);
|
||||
return SQLITE_OK;
|
||||
}
|
||||
/*
|
||||
@ -603,7 +603,7 @@ static int porterNext(
|
||||
int n = c->iOffset-iStartOffset;
|
||||
if( n>c->nAllocated ){
|
||||
c->nAllocated = n+20;
|
||||
c->zToken = realloc(c->zToken, c->nAllocated);
|
||||
c->zToken = sqlite3_realloc(c->zToken, c->nAllocated);
|
||||
if( c->zToken==NULL ) return SQLITE_NOMEM;
|
||||
}
|
||||
porter_stemmer(&z[iStartOffset], n, c->zToken, pnBytes);
|
||||
|
@ -65,8 +65,9 @@ static int simpleCreate(
|
||||
){
|
||||
simple_tokenizer *t;
|
||||
|
||||
t = (simple_tokenizer *) calloc(sizeof(*t), 1);
|
||||
t = (simple_tokenizer *) sqlite3_malloc(sizeof(*t));
|
||||
if( t==NULL ) return SQLITE_NOMEM;
|
||||
memset(t, 0, sizeof(*t));
|
||||
|
||||
/* TODO(shess) Delimiters need to remain the same from run to run,
|
||||
** else we need to reindex. One solution would be a meta-table to
|
||||
@ -79,7 +80,7 @@ static int simpleCreate(
|
||||
unsigned char ch = argv[1][i];
|
||||
/* We explicitly don't support UTF-8 delimiters for now. */
|
||||
if( ch>=0x80 ){
|
||||
free(t);
|
||||
sqlite3_free(t);
|
||||
return SQLITE_ERROR;
|
||||
}
|
||||
t->delim[ch] = 1;
|
||||
@ -100,7 +101,7 @@ static int simpleCreate(
|
||||
** Destroy a tokenizer
|
||||
*/
|
||||
static int simpleDestroy(sqlite3_tokenizer *pTokenizer){
|
||||
free(pTokenizer);
|
||||
sqlite3_free(pTokenizer);
|
||||
return SQLITE_OK;
|
||||
}
|
||||
|
||||
@ -117,7 +118,7 @@ static int simpleOpen(
|
||||
){
|
||||
simple_tokenizer_cursor *c;
|
||||
|
||||
c = (simple_tokenizer_cursor *) malloc(sizeof(*c));
|
||||
c = (simple_tokenizer_cursor *) sqlite3_malloc(sizeof(*c));
|
||||
if( c==NULL ) return SQLITE_NOMEM;
|
||||
|
||||
c->pInput = pInput;
|
||||
@ -143,8 +144,8 @@ static int simpleOpen(
|
||||
*/
|
||||
static int simpleClose(sqlite3_tokenizer_cursor *pCursor){
|
||||
simple_tokenizer_cursor *c = (simple_tokenizer_cursor *) pCursor;
|
||||
free(c->pToken);
|
||||
free(c);
|
||||
sqlite3_free(c->pToken);
|
||||
sqlite3_free(c);
|
||||
return SQLITE_OK;
|
||||
}
|
||||
|
||||
@ -182,7 +183,7 @@ static int simpleNext(
|
||||
int i, n = c->iOffset-iStartOffset;
|
||||
if( n>c->nTokenAllocated ){
|
||||
c->nTokenAllocated = n+20;
|
||||
c->pToken = realloc(c->pToken, c->nTokenAllocated);
|
||||
c->pToken = sqlite3_realloc(c->pToken, c->nTokenAllocated);
|
||||
if( c->pToken==NULL ) return SQLITE_NOMEM;
|
||||
}
|
||||
for(i=0; i<n; i++){
|
||||
|
18
main.mk
18
main.mk
@ -220,8 +220,8 @@ TESTSRC = \
|
||||
$(TOP)/src/test_tclvar.c \
|
||||
$(TOP)/src/test_thread.c \
|
||||
|
||||
TESTSRC += $(TOP)/ext/fts2/fts2_tokenizer.c
|
||||
TESTSRC += $(TOP)/ext/fts3/fts3_tokenizer.c
|
||||
#TESTSRC += $(TOP)/ext/fts2/fts2_tokenizer.c
|
||||
#TESTSRC += $(TOP)/ext/fts3/fts3_tokenizer.c
|
||||
|
||||
TESTSRC2 = \
|
||||
$(TOP)/src/attach.c $(TOP)/src/btree.c $(TOP)/src/build.c $(TOP)/src/date.c \
|
||||
@ -272,13 +272,6 @@ EXTHDR += \
|
||||
#
|
||||
all: sqlite3.h libsqlite3.a sqlite3$(EXE)
|
||||
|
||||
# Generate the file "last_change" which contains the date of change
|
||||
# of the most recently modified source code file
|
||||
#
|
||||
last_change: $(SRC)
|
||||
cat $(SRC) | grep '$$Id: ' | sort -k 5 | tail -1 \
|
||||
| $(NAWK) '{print $$5,$$6}' >last_change
|
||||
|
||||
libsqlite3.a: $(LIBOBJ)
|
||||
$(AR) libsqlite3.a $(LIBOBJ)
|
||||
$(RANLIB) libsqlite3.a
|
||||
@ -433,6 +426,12 @@ amalgamation-testfixture$(EXE): sqlite3.c $(TESTSRC) $(TOP)/src/tclsqlite.c
|
||||
$(TESTSRC) $(TOP)/src/tclsqlite.c sqlite3.c \
|
||||
-o testfixture$(EXE) $(LIBTCL) $(THREADLIB)
|
||||
|
||||
fts3-testfixture$(EXE): sqlite3.c fts3amal.c $(TESTSRC) $(TOP)/src/tclsqlite.c
|
||||
$(TCCX) $(TCL_FLAGS) $(TESTFIXTURE_FLAGS) \
|
||||
-DSQLITE_ENABLE_FTS3=1 \
|
||||
$(TESTSRC) $(TOP)/src/tclsqlite.c sqlite3.c fts3amal.c \
|
||||
-o testfixture$(EXE) $(LIBTCL) $(THREADLIB)
|
||||
|
||||
fulltest: testfixture$(EXE) sqlite3$(EXE)
|
||||
./testfixture$(EXE) $(TOP)/test/all.test
|
||||
|
||||
@ -479,3 +478,4 @@ clean:
|
||||
rm -f *.da *.bb *.bbg gmon.out
|
||||
rm -rf tsrc
|
||||
rm -f testloadext.dll libtestloadext.so
|
||||
rm -f sqlite3.c fts?amal.c
|
||||
|
25
manifest
25
manifest
@ -1,5 +1,5 @@
|
||||
C Remove\smost\sdocumentation\sfrom\sthe\ssource\scode\srepository.\nDocumentation\sconfiguration\smanagement\sis\snow\shandled\sby\sa\nseparate\srepository\sat\shttp://www.sqlite.org/docsrc.\s(CVS\s4553)
|
||||
D 2007-11-23T15:12:44
|
||||
C Changes\sfts3\sto\suse\sonly\ssqlite3_malloc()\sand\snot\ssystem\smalloc.\nTicket\s#2762.\s(CVS\s4554)
|
||||
D 2007-11-23T17:31:17
|
||||
F Makefile.arm-wince-mingw32ce-gcc ac5f7b2cef0cd850d6f755ba6ee4ab961b1fadf7
|
||||
F Makefile.in 35396fd58890420b29edcf27b6c0e2d054862a6b
|
||||
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
|
||||
@ -16,7 +16,7 @@ F art/nocopy.gif 716aa07d4bb7250d4e75756073bf8ef9f56bec8f
|
||||
F art/powered_by_sqlite.gif 7fbcd7d3675391fd3d21672c14c05f5999eb60d1
|
||||
F config.guess dba2d1300ec8f8cd00c6fb44b9edde21c14e960c
|
||||
F config.sub 9a842e7c332ed65cef3f2c20354e06dc998b2796
|
||||
F configure 991a04cca803ad0f049ce4e2aebe53737bd487b0 x
|
||||
F configure 802235968fa597ed6579498b2d2e7a78b5d3988b x
|
||||
F configure.ac ec7fd46700b722ae06bfc083e5d5e49fd6e7f12c
|
||||
F contrib/sqlitecon.tcl 210a913ad63f9f991070821e599d600bd913e0ad
|
||||
F doc/lemon.html f0f682f50210928c07e562621c3b7e8ab912a538
|
||||
@ -50,21 +50,21 @@ 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 2e77742df5822f14f835442e799e9d13cfb281d5
|
||||
F ext/fts3/fts3.c 2ea2aead0d342a9844f522d9b51e24d47614b06b
|
||||
F ext/fts3/fts3.h 3a10a0af180d502cecc50df77b1b22df142817fe
|
||||
F ext/fts3/fts3_hash.c 1c2dc969a5b485848fb804c0ac41a046f18a09c9
|
||||
F ext/fts3/fts3_hash.h 004b759e1602ff16dfa02fea3ca1c77336ad6798
|
||||
F ext/fts3/fts3_icu.c e676f8f0c472cfbb3194febf0eadc1cea6ff0d0c
|
||||
F ext/fts3/fts3_porter.c a3e823a0a8fbb038750c9aa55043e19bdb08eacb
|
||||
F ext/fts3/fts3_porter.c 3063da945fb0a935781c135f7575f39166173eca
|
||||
F ext/fts3/fts3_tokenizer.c 81e7604555b24dce6bc487d8169ca4ef51c71e4c
|
||||
F ext/fts3/fts3_tokenizer.h 7eb79de4f991a77f43c517e209e5fae95dfa7369
|
||||
F ext/fts3/fts3_tokenizer1.c 0580bf16fdd5a01ae256f1280c550be1cb85d73f
|
||||
F ext/fts3/fts3_tokenizer1.c 0a5bcc579f35de5d24a9345d7908dc25ae403ee7
|
||||
F ext/fts3/mkfts3amal.tcl 8282b56f11d008b9fa1f09ad3f7eca513949575e
|
||||
F ext/icu/README.txt 3b130aa66e7a681136f6add198b076a2f90d1e33
|
||||
F ext/icu/icu.c 61a345d8126686aa3487aa8d2d0f68abd655f7a4
|
||||
F install-sh 9d4de14ab9fb0facae2f48780b874848cbf2f895
|
||||
F ltmain.sh 56abb507100ed2d4261f6dd1653dec3cf4066387
|
||||
F main.mk cb811927bd5d5ccb4e4d2803cda37e7beb4cb301
|
||||
F main.mk 297e32b77abde73e5638e048d474a86617bc40af
|
||||
F mkdll.sh 37fa8a7412e51b5ab2bc6d4276135f022a0feffb
|
||||
F mkextu.sh 416f9b7089d80e5590a29692c9d9280a10dbad9f
|
||||
F mkextw.sh 1a866b53637dab137191341cc875575a5ca110fb
|
||||
@ -178,7 +178,7 @@ F src/vtab.c f819d55ef638d45e09ce00009d435da8bf16f528
|
||||
F src/where.c ddcbc5c419e9851906c9a9e76839086c98e7cea4
|
||||
F tclinstaller.tcl 4356d9d94d2b5ed5e68f9f0c80c4df3048dd7617
|
||||
F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2
|
||||
F test/all.test b59d1bd8b0c1d4a08b845e8af48fd43926f01f11
|
||||
F test/all.test d810e0ff34656a7754f2b8d5448fc199544ffc73
|
||||
F test/alter.test a87b7933d41c713c53341abe4eb014d0e273119e
|
||||
F test/alter2.test 4e0c502214daa710a0a9d7ec9689a0326b1a4e2a
|
||||
F test/alter3.test 8ce6b9c5605b3cfe7b901f454ecaf174c4f93e31
|
||||
@ -292,6 +292,7 @@ F test/fts2m.test 4b30142ead6f3ed076e880a2a464064c5ad58c51
|
||||
F test/fts2n.test a70357e72742681eaebfdbe9007b87ff3b771638
|
||||
F test/fts2o.test c6a79567d85403dc4d15b89f3f9799a0a0aef065
|
||||
F test/fts2token.test d8070b241a15ff13592a9ae4a8b7c171af6f445a
|
||||
F test/fts3.test 6ee4c38b0864583c80e82a2d4372f63aae8b10c7
|
||||
F test/fts3aa.test 432d1d5c41939bb5405d4d6c80a9ec759b363393
|
||||
F test/fts3ab.test 7f6cf260ae80dda064023df8e8e503e9a412b91f
|
||||
F test/fts3ac.test 356280144a2c92aa7b11474afadfe62a437fcd69
|
||||
@ -396,7 +397,7 @@ F test/pragma2.test 5364893491b9231dd170e3459bfc2e2342658b47
|
||||
F test/printf.test 6bf1a86c6a1e45536f72d782bf44c8e3c76510f8
|
||||
F test/progress.test 5b075c3c790c7b2a61419bc199db87aaf48b8301 x
|
||||
F test/ptrchng.test 38ae1806833d72d9a81a6121322e274f24937e18
|
||||
F test/quick.test fa4e9d57956d05d024689e12ec7b40b3f0224d44
|
||||
F test/quick.test 18727c9a480fe87143c5e7f381a38df8d1203d44
|
||||
F test/quote.test 215897dbe8de1a6f701265836d6601cc6ed103e6
|
||||
F test/rdonly.test b34db316525440d3b42c32e83942c02c37d28ef0
|
||||
F test/reindex.test 38b138abe36bf9a08c791ed44d9f76cd6b97b78b
|
||||
@ -589,7 +590,7 @@ F www/tclsqlite.tcl 8be95ee6dba05eabcd27a9d91331c803f2ce2130
|
||||
F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
|
||||
F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
|
||||
F www/whentouse.tcl fc46eae081251c3c181bd79c5faef8195d7991a5
|
||||
P 492b39b6a8bf4ad8792d7a7949f77827a5047fd8
|
||||
R 7554991b55d2120a0c7e743f79583bd0
|
||||
P b20f3a6fed1027fc8faf886c8998dcb5dc0917c6
|
||||
R 5ee0135e46211550a7bb8e22a222740d
|
||||
U drh
|
||||
Z 396d00f0624becb7305e8ad8f1621670
|
||||
Z f73b5c155cb24c8d6437849c3d16495e
|
||||
|
@ -1 +1 @@
|
||||
b20f3a6fed1027fc8faf886c8998dcb5dc0917c6
|
||||
460af6bb668094c99a1d4dc1540b44b6d1d036b6
|
@ -10,7 +10,7 @@
|
||||
#***********************************************************************
|
||||
# This file runs all tests.
|
||||
#
|
||||
# $Id: all.test,v 1.48 2007/09/01 11:04:28 danielk1977 Exp $
|
||||
# $Id: all.test,v 1.49 2007/11/23 17:31:18 drh Exp $
|
||||
|
||||
set testdir [file dirname $argv0]
|
||||
source $testdir/tester.tcl
|
||||
@ -64,6 +64,7 @@ lappend EXCLUDE misuse.test ;# Run seperately later.
|
||||
lappend EXCLUDE memleak.test ;# Alternate test driver script
|
||||
lappend EXCLUDE fuzz.test
|
||||
lappend EXCLUDE soak.test ;# Takes a very long time (default 1 hr)
|
||||
lappend EXCLUSE fts3.test ;# Wrapper for muliple fts3*.tests
|
||||
|
||||
# Files to include in the test. If this list is empty then everything
|
||||
# that is not in the EXCLUDE list is run.
|
||||
|
68
test/fts3.test
Normal file
68
test/fts3.test
Normal file
@ -0,0 +1,68 @@
|
||||
#
|
||||
# May you do good and not evil.
|
||||
# May you find forgiveness for yourself and forgive others.
|
||||
# May you share freely, never taking more than you give.
|
||||
#
|
||||
#***********************************************************************
|
||||
# This file runs all tests.
|
||||
#
|
||||
# $Id: fts3.test,v 1.1 2007/11/23 17:31:19 drh Exp $
|
||||
|
||||
proc lshift {lvar} {
|
||||
upvar $lvar l
|
||||
set ret [lindex $l 0]
|
||||
set l [lrange $l 1 end]
|
||||
return $ret
|
||||
}
|
||||
while {[set arg [lshift argv]] != ""} {
|
||||
switch -- $arg {
|
||||
-sharedpagercache {
|
||||
sqlite3_enable_shared_cache 1
|
||||
}
|
||||
-soak {
|
||||
set SOAKTEST 1
|
||||
}
|
||||
default {
|
||||
set argv [linsert $argv 0 $arg]
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
set testdir [file dirname $argv0]
|
||||
source $testdir/tester.tcl
|
||||
# If SQLITE_ENABLE_FTS3 is defined, omit this file.
|
||||
ifcapable !fts3 {
|
||||
puts stderr "this build does not include FTS3 capability"
|
||||
exit 1
|
||||
}
|
||||
rename finish_test really_finish_test
|
||||
proc finish_test {} {}
|
||||
set ISQUICK 1
|
||||
|
||||
set EXCLUDE {
|
||||
fts3.test
|
||||
}
|
||||
|
||||
# Files to include in the test. If this list is empty then everything
|
||||
# that is not in the EXCLUDE list is run.
|
||||
#
|
||||
set INCLUDE {
|
||||
}
|
||||
|
||||
foreach testfile [lsort -dictionary [glob $testdir/fts3*.test]] {
|
||||
set tail [file tail $testfile]
|
||||
if {[lsearch -exact $EXCLUDE $tail]>=0} continue
|
||||
if {[llength $INCLUDE]>0 && [lsearch -exact $INCLUDE $tail]<0} continue
|
||||
source $testfile
|
||||
catch {db close}
|
||||
if {$sqlite_open_file_count>0} {
|
||||
puts "$tail did not close all files: $sqlite_open_file_count"
|
||||
incr nErr
|
||||
lappend ::failList $tail
|
||||
set sqlite_open_file_count 0
|
||||
}
|
||||
}
|
||||
|
||||
set sqlite_open_file_count 0
|
||||
really_finish_test
|
@ -6,7 +6,7 @@
|
||||
#***********************************************************************
|
||||
# This file runs all tests.
|
||||
#
|
||||
# $Id: quick.test,v 1.65 2007/10/23 10:25:30 danielk1977 Exp $
|
||||
# $Id: quick.test,v 1.66 2007/11/23 17:31:19 drh Exp $
|
||||
|
||||
proc lshift {lvar} {
|
||||
upvar $lvar l
|
||||
@ -49,6 +49,7 @@ set EXCLUDE {
|
||||
crash2.test
|
||||
crash3.test
|
||||
exclusive3.test
|
||||
fts3.test
|
||||
fuzz.test
|
||||
fuzz_malloc.test
|
||||
in2.test
|
||||
|
Reference in New Issue
Block a user