#include "sqlite3ext.h"
SQLITE_EXTENSION_INIT1
+
+#if 0
+# define TRACE(A) printf A; fflush(stdout)
+#else
+# define TRACE(A)
+#endif
+
/* utility functions */
/* We encode variable-length integers in little-endian order using seven bits
static int sql_exec(sqlite3 *db, const char *zName, const char *zFormat){
char *zCommand = string_format(zFormat, zName);
+ TRACE(("FTS1 sql: %s\n", zCommand));
int rc = sqlite3_exec(db, zCommand, NULL, 0, NULL);
free(zCommand);
return rc;
static int sql_prepare(sqlite3 *db, const char *zName, sqlite3_stmt **ppStmt,
const char *zFormat){
char *zCommand = string_format(zFormat, zName);
+ TRACE(("FTS1 prepare: %s\n", zCommand));
int rc = sqlite3_prepare(db, zCommand, -1, ppStmt, NULL);
free(zCommand);
return rc;
static void fulltext_vtab_destroy(fulltext_vtab *v){
int iStmt;
+ TRACE(("FTS1 Destroy %p\n", v));
for( iStmt=0; iStmt<MAX_STMT; iStmt++ ){
if( v->pFulltextStatements[iStmt]!=NULL ){
sqlite3_finalize(v->pFulltextStatements[iStmt]);
memset(v->pFulltextStatements, 0, sizeof(v->pFulltextStatements));
*ppVTab = &v->base;
+ TRACE(("FTS1 Connect %p\n", v));
return SQLITE_OK;
}
sqlite3_vtab **ppVTab){
int rc;
assert( argc>=3 );
+ TRACE(("FTS1 Create\n"));
/* The %_content table holds the text of each full-text item, with
** the rowid used as the docid.
}
}
pInfo->idxNum = QUERY_GENERIC;
+ TRACE(("FTS1 BestIndex\n"));
return SQLITE_OK;
}
static int fulltextDisconnect(sqlite3_vtab *pVTab){
+ TRACE(("FTS1 Disconnect %p\n", pVTab));
fulltext_vtab_destroy((fulltext_vtab *)pVTab);
return SQLITE_OK;
}
static int fulltextDestroy(sqlite3_vtab *pVTab){
fulltext_vtab *v = (fulltext_vtab *)pVTab;
+ TRACE(("FTS1 Destroy %p\n", pVTab));
int rc = sql_exec(v->db, v->zName,
"drop table %_content; drop table %_term");
if( rc!=SQLITE_OK ) return rc;
c = (fulltext_cursor *) calloc(sizeof(fulltext_cursor), 1);
/* sqlite will initialize c->base */
*ppCursor = &c->base;
+ TRACE(("FTS1 Open %p: %p\n", pVTab, c));
return SQLITE_OK;
}
static int fulltextClose(sqlite3_vtab_cursor *pCursor){
fulltext_cursor *c = (fulltext_cursor *) pCursor;
+ TRACE(("FTS1 Close %p\n", c));
sqlite3_finalize(c->pStmt);
if( c->result.pDoclist!=NULL ){
docListDelete(c->result.pDoclist);
sqlite_int64 iDocid;
int rc;
+ TRACE(("FTS1 Next %p\n", pCursor));
switch( c->iCursorType ){
case QUERY_GENERIC:
/* TODO(shess) Handle SQLITE_SCHEMA AND SQLITE_BUSY. */
int rc;
const char *zStatement;
+ TRACE(("FTS1 Filter %p\n",pCursor));
c->iCursorType = idxNum;
switch( idxNum ){
case QUERY_GENERIC:
sqlite_int64 *pRowid){
fulltext_vtab *v = (fulltext_vtab *) pVtab;
+ TRACE(("FTS1 Update %p\n", pVtab));
if( nArg<2 ){
return index_delete(v, sqlite3_value_int64(ppArg[0]));
}
-C Do\snot\scall\sthe\sxDisconnect\smethod\son\sa\svirtual\stable\swhile\sxUpdate\sis\npending.\s\sInstead,\sdefer\sthe\sxDisconnect\suntil\safter\sxUpdate\scompletes.\s(CVS\s3387)
-D 2006-09-02T20:57:52
+C Add\sa\sTRACE\smacro\sto\sthe\sFTS1\smodule\sfor\stroubleshooting.\s\sTurned\soff\sby\ndefault.\s(CVS\s3388)
+D 2006-09-02T20:58:26
F Makefile.in 659b63368cfbb95a224c9d2f2a9897802d96a4ea
F Makefile.linux-gcc 2d8574d1ba75f129aba2019f0b959db380a90935
F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028
F ext/fts1/README.txt 20ac73b006a70bcfd80069bdaf59214b6cf1db5e
F ext/fts1/ft_hash.c 3927bd880e65329bdc6f506555b228b28924921b
F ext/fts1/ft_hash.h 1a35e654a235c2c662d3ca0dfc3138ad60b8b7d5
-F ext/fts1/fts1.c c8532f1367150245d7d9dab4178159eeafeeece9
+F ext/fts1/fts1.c e4742aa2ed669c49120c7ccdb0730b3045ba4eb5
F ext/fts1/fts1.h fe8e8f38dd6d2d2645b9b0d6972e80985249575f
F ext/fts1/fts1_hash.c 3196cee866edbebb1c0521e21672e6d599965114
F ext/fts1/fts1_hash.h 957d378355ed29f672cd5add012ce8b088a5e089
F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
F www/whentouse.tcl 97e2b5cd296f7d8057e11f44427dea8a4c2db513
-P ca864ee913ea5ae88761e617bcac300ffa339369
-R a007e2ad3282d7bf3c46df0a1cb84279
+P 61148f4c36255c4ed3552f888fa75252b300589d
+R 047544ba02c59392188ec6883b4588cb
U drh
-Z cb0935641e94f4c2fc376bd17950fce1
+Z ad8f2586cf13efa1b155ad298401ac97