Provide the new SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER option to

sqlite3_db_config() that can be used to activate the two-argument version
of fts3_tokenizer() for a specific database connection at run-time.

FossilOrigin-Name: 374b5108087a2eae03676c0f3469b37a272145bf
This commit is contained in:
drh
2016-02-26 15:38:24 +00:00
parent 5f7d411e98
commit d42908fb0e
10 changed files with 189 additions and 123 deletions
+48
View File
@@ -6920,6 +6920,53 @@ static int test_register_dbstat_vtab(
#endif /* SQLITE_OMIT_VIRTUALTABLE */
}
/*
** tclcmd: sqlite3_db_config DB SETTING VALUE
**
** Invoke sqlite3_db_config() for one of the setting values.
*/
static int test_sqlite3_db_config(
void *clientData,
Tcl_Interp *interp,
int objc,
Tcl_Obj *CONST objv[]
){
static const struct {
const char *zName;
int eVal;
} aSetting[] = {
{ "FKEY", SQLITE_DBCONFIG_ENABLE_FKEY },
{ "TRIGGER", SQLITE_DBCONFIG_ENABLE_TRIGGER },
{ "FTS3_TOKENIZER", SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER },
};
int i;
int v;
const char *zSetting;
sqlite3 *db;
if( objc!=4 ){
Tcl_WrongNumArgs(interp, 1, objv, "DB SETTING VALUE");
return TCL_ERROR;
}
if( getDbPointer(interp, Tcl_GetString(objv[1]), &db) ) return TCL_ERROR;
zSetting = Tcl_GetString(objv[2]);
if( sqlite3_strglob("SQLITE_*", zSetting)==0 ) zSetting += 7;
if( sqlite3_strglob("DBCONFIG_*", zSetting)==0 ) zSetting += 9;
if( sqlite3_strglob("ENABLE_*", zSetting)==0 ) zSetting += 7;
for(i=0; i<ArraySize(aSetting); i++){
if( strcmp(zSetting, aSetting[i].zName)==0 ) break;
}
if( i>=ArraySize(aSetting) ){
Tcl_SetObjResult(interp,
Tcl_NewStringObj("unknown sqlite3_db_config setting", -1));
return TCL_ERROR;
}
if( Tcl_GetIntFromObj(interp, objv[3], &v) ) return TCL_ERROR;
sqlite3_db_config(db, aSetting[i].eVal, v, &v);
Tcl_SetObjResult(interp, Tcl_NewIntObj(v));
return TCL_OK;
}
/*
** Register commands with the TCL interpreter.
*/
@@ -6989,6 +7036,7 @@ int Sqlitetest1_Init(Tcl_Interp *interp){
Tcl_ObjCmdProc *xProc;
void *clientData;
} aObjCmd[] = {
{ "sqlite3_db_config", test_sqlite3_db_config, 0 },
{ "bad_behavior", test_bad_behavior, (void*)&iZero },
{ "register_dbstat_vtab", test_register_dbstat_vtab },
{ "sqlite3_connection_pointer", get_sqlite_pointer, 0 },