SSMRESULT CEvaluationEngine::initializeEngine() { SSMRESULT res = SSM_E_FAIL; sqlite3 *pBackupFile = NULL; sqlite3_backup *pBackup = NULL; const char *strCreate_ModelRelationTable = "create table [ModelRelation]\ (\ modelId integer primary key autoincrement,\ modelName text NOT NULL,\ lPos int NOT NULL,\ rPos int NOT NULL\ );"; const char *strCreate_DataRelationTable = "create table [DataRelation]\ (\ id integer primary key autoincrement,\ modelId int NOT NULL,\ lPos int NOT NULL,\ rPos int NOT NULL,\ dataId int NOT NULL\ );"; //Create rootModel const char *strRootModel = "insert into [ModelRelation] values (null, 'root', 1, 2);"; const char *tblRoot = "create table [ModelData1](dataId integer primary key autoincrement, name text);"; const char *rootData = "insert into [ModelData1] values (null, 'root');"; const char *rootRelation = "insert into [DataRelation] values (null, 1, 1, 2, 1);"; CHK_SQLITE(sqlite3_open_v2(LOCATION_SSM_DB, &m_pSQLite3, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE | SQLITE_OPEN_FULLMUTEX, NULL), SQLITE_OK); CHK_SQLITE(sqlite3_create_function_v2(m_pSQLite3, "OnSQLTrigger", 3, SQLITE_UTF8, NULL, onSQLTrigger, NULL, NULL, NULL), SQLITE_OK); if (strlen(LOCATION_SSM_DB_DUMP) > 0 && sqlite3_open_v2(LOCATION_SSM_DB_DUMP, &pBackupFile, SQLITE_OPEN_READWRITE, NULL) == SQLITE_OK) { pBackup = sqlite3_backup_init(m_pSQLite3, "main", pBackupFile, "main"); CHK_SQLITE(sqlite3_errcode(pBackupFile), SQLITE_OK); SSM_CLEANUP_NULL_ASSERT(pBackup); CHK_SQLITE(sqlite3_backup_step(pBackup, -1), SQLITE_DONE); CHK_SQLITE(sqlite3_backup_finish(pBackup), SQLITE_OK); CHK_SQLITE(sqlite3_close(pBackupFile), SQLITE_OK); res = SSM_S_OK; } else { SSM_CLEANUP_ASSERT(executeSQL_NoReturn(strCreate_ModelRelationTable)); SSM_CLEANUP_ASSERT(executeSQL_NoReturn(strCreate_DataRelationTable)); SSM_CLEANUP_ASSERT(executeSQL_NoReturn(strRootModel)); SSM_CLEANUP_ASSERT(executeSQL_NoReturn(tblRoot)); SSM_CLEANUP_ASSERT(executeSQL_NoReturn(rootData)); SSM_CLEANUP_ASSERT(executeSQL_NoReturn(rootRelation)); } CLEANUP: return res; }
void SqliteDatabaseBackend::registerRankingFunction() { sqlite3_create_function_v2(sqliteDatabaseHandle(), "okapi_bm25", -1, SQLITE_ANY, 0, okapi_bm25, 0, 0, 0); sqlite3_create_function_v2(sqliteDatabaseHandle(), "okapi_bm25f", -1, SQLITE_UTF8, 0, okapi_bm25f, 0, 0, 0); sqlite3_create_function_v2(sqliteDatabaseHandle(), "okapi_bm25f_kb", -1, SQLITE_UTF8, 0, okapi_bm25f_kb, 0, 0, 0); }
int db_init_pwhash(sqlite3 *db) { return sqlite3_create_function_v2(db, "pwhash", 2, SQLITE_UTF8, NULL, db_pwhash, NULL, NULL, NULL); }
int machine_install_callback(Pointer g_db,char * name,int nargs,Pointer gfunction) { return msg_id(sqlite3_create_function_v2((sqlite3 *) g_db, name,nargs,SQLITE_UTF8 ,0, (xFunc) gfunction,0,0,0)); }