Ejemplo n.º 1
0
static int
sqlite3VirtualTextInit (sqlite3 * db)
{
    int rc = SQLITE_OK;
    virtualtext_module.iVersion = 1;
    virtualtext_module.xCreate = &vtxt_create;
    virtualtext_module.xConnect = &vtxt_connect;
    virtualtext_module.xBestIndex = &vtxt_best_index;
    virtualtext_module.xDisconnect = &vtxt_disconnect;
    virtualtext_module.xDestroy = &vtxt_destroy;
    virtualtext_module.xOpen = &vtxt_open;
    virtualtext_module.xClose = &vtxt_close;
    virtualtext_module.xFilter = &vtxt_filter;
    virtualtext_module.xNext = &vtxt_next;
    virtualtext_module.xEof = &vtxt_eof;
    virtualtext_module.xColumn = &vtxt_column;
    virtualtext_module.xRowid = &vtxt_rowid;
    virtualtext_module.xUpdate = &vtxt_update;
    virtualtext_module.xBegin = &vtxt_begin;
    virtualtext_module.xSync = &vtxt_sync;
    virtualtext_module.xCommit = &vtxt_commit;
    virtualtext_module.xRollback = &vtxt_rollback;
    virtualtext_module.xFindFunction = NULL;
    sqlite3_create_module_v2 (db, "VirtualText", &virtualtext_module, NULL, 0);
    return rc;
}
Ejemplo n.º 2
0
static int
spliteVirtualXPathInit (sqlite3 * db, void *p_cache)
{
    int rc = SQLITE_OK;
    my_xpath_module.iVersion = 1;
    my_xpath_module.xCreate = &vxpath_create;
    my_xpath_module.xConnect = &vxpath_connect;
    my_xpath_module.xBestIndex = &vxpath_best_index;
    my_xpath_module.xDisconnect = &vxpath_disconnect;
    my_xpath_module.xDestroy = &vxpath_destroy;
    my_xpath_module.xOpen = &vxpath_open;
    my_xpath_module.xClose = &vxpath_close;
    my_xpath_module.xFilter = &vxpath_filter;
    my_xpath_module.xNext = &vxpath_next;
    my_xpath_module.xEof = &vxpath_eof;
    my_xpath_module.xColumn = &vxpath_column;
    my_xpath_module.xRowid = &vxpath_rowid;
    my_xpath_module.xUpdate = &vxpath_update;
    my_xpath_module.xBegin = &vxpath_begin;
    my_xpath_module.xSync = &vxpath_sync;
    my_xpath_module.xCommit = &vxpath_commit;
    my_xpath_module.xRollback = &vxpath_rollback;
    my_xpath_module.xFindFunction = NULL;
    my_xpath_module.xRename = &vxpath_rename;
    sqlite3_create_module_v2 (db, "VirtualXPath", &my_xpath_module, p_cache, 0);
    return rc;
}
Ejemplo n.º 3
0
void vjs(sqlite3 *db) {
  char *e;
  int rc = sqlite3_create_module_v2(db, "vjs", &module, NULL, destructor);
  rc = sqlite3_exec(db, "DROP TABLE javascript", NULL, NULL, &e);
  rc = sqlite3_exec(db, "CREATE VIRTUAL TABLE javascript USING vjs", NULL, NULL, &e);
  return;
}
int
sqlite3VirtualSpatialIndexInit (sqlite3 * db)
{
    int rc = SQLITE_OK;
    my_spidx_module.iVersion = 1;
    my_spidx_module.xCreate = &vspidx_create;
    my_spidx_module.xConnect = &vspidx_connect;
    my_spidx_module.xBestIndex = &vspidx_best_index;
    my_spidx_module.xDisconnect = &vspidx_disconnect;
    my_spidx_module.xDestroy = &vspidx_destroy;
    my_spidx_module.xOpen = &vspidx_open;
    my_spidx_module.xClose = &vspidx_close;
    my_spidx_module.xFilter = &vspidx_filter;
    my_spidx_module.xNext = &vspidx_next;
    my_spidx_module.xEof = &vspidx_eof;
    my_spidx_module.xColumn = &vspidx_column;
    my_spidx_module.xRowid = &vspidx_rowid;
    my_spidx_module.xUpdate = &vspidx_update;
    my_spidx_module.xBegin = &vspidx_begin;
    my_spidx_module.xSync = &vspidx_sync;
    my_spidx_module.xCommit = &vspidx_commit;
    my_spidx_module.xRollback = &vspidx_rollback;
    my_spidx_module.xFindFunction = NULL;
    sqlite3_create_module_v2 (db, "VirtualSpatialIndex", &my_spidx_module, NULL,
			      0);
    return rc;
}
Ejemplo n.º 5
0
/*
** Invoke this routine to create a specific instance of an intarray object.
** The new intarray object is returned by the 3rd parameter.
**
** Each intarray object corresponds to a virtual table in the TEMP table
** with a name of zName.
**
** Destroy the intarray object by dropping the virtual table.  If not done
** explicitly by the application, the virtual table will be dropped implicitly
** by the system when the database connection is closed.
*/
SQLITE_API int sqlite3_intarray_create(
  sqlite3 *db,
  const char *zName,
  sqlite3_intarray **ppReturn
){
  int rc = SQLITE_OK;
#ifndef SQLITE_OMIT_VIRTUALTABLE
  sqlite3_intarray *p;

  *ppReturn = p = sqlite3_malloc64( sizeof(*p) );
  if( p==0 ){
    return SQLITE_NOMEM;
  }
  memset(p, 0, sizeof(*p));
  rc = sqlite3_create_module_v2(db, zName, &intarrayModule, p,
                                (void(*)(void*))intarrayFree);
  if( rc==SQLITE_OK ){
    char *zSql;
    zSql = sqlite3_mprintf("CREATE VIRTUAL TABLE temp.%Q USING %Q",
                           zName, zName);
    rc = sqlite3_exec(db, zSql, 0, 0, 0);
    sqlite3_free(zSql);
  }
#endif
  return rc;
}
Ejemplo n.º 6
0
static int
spliteKnnInit (sqlite3 * db)
{
    int rc = SQLITE_OK;
    my_knn_module.iVersion = 1;
    my_knn_module.xCreate = &vknn_create;
    my_knn_module.xConnect = &vknn_connect;
    my_knn_module.xBestIndex = &vknn_best_index;
    my_knn_module.xDisconnect = &vknn_disconnect;
    my_knn_module.xDestroy = &vknn_destroy;
    my_knn_module.xOpen = &vknn_open;
    my_knn_module.xClose = &vknn_close;
    my_knn_module.xFilter = &vknn_filter;
    my_knn_module.xNext = &vknn_next;
    my_knn_module.xEof = &vknn_eof;
    my_knn_module.xColumn = &vknn_column;
    my_knn_module.xRowid = &vknn_rowid;
    my_knn_module.xUpdate = &vknn_update;
    my_knn_module.xBegin = &vknn_begin;
    my_knn_module.xSync = &vknn_sync;
    my_knn_module.xCommit = &vknn_commit;
    my_knn_module.xRollback = &vknn_rollback;
    my_knn_module.xFindFunction = NULL;
    my_knn_module.xRename = &vknn_rename;
    sqlite3_create_module_v2 (db, "VirtualKNN", &my_knn_module, NULL, 0);
    return rc;
}
Ejemplo n.º 7
0
/*
** Register the CSV module with database handle db. This creates the
** virtual table module "csv".
*/
int sqlite3CsvInit(sqlite3 *db){
  int rc = SQLITE_OK;

  if( rc==SQLITE_OK ){
    void *c = (void *)NULL;
    rc = sqlite3_create_module_v2(db, "csv", &csvModule, c, 0);
  }

  return rc;
}
Ejemplo n.º 8
0
/* attach_connection DBCONN */
static int AttachConnectionObjCmd(void *clientdata,
                                  Tcl_Interp *interp,
                                  int objc,
                                  Tcl_Obj * const *objv)
{
    VTableInterpContext *vticP = (VTableInterpContext *)clientdata;
    VTableDB *vtdbP;
    sqlite3 *sqliteP;
    int new_entry;

    if (objc != 2) {
        Tcl_WrongNumArgs(interp, 1, objv, " DBCONN");
        return TCL_ERROR;
    }

    /* Map the db connection command to the connection pointer */
    if (GetSqliteConnPtr(interp, Tcl_GetString(objv[1]), &sqliteP) != TCL_OK)
        return TCL_ERROR;

    /* Check if already registered the virtual table module for this conn. */
    
    if (Tcl_FindHashEntry(&vticP->dbconns, sqliteP) != NULL)
        return TCL_OK;

    /* Need to register for this db conn */
    vtdbP = VTDBNew();
    Tcl_IncrRefCount(objv[1]);
    vtdbP->dbcmd_objP = objv[1];

    /* Find out the NULL value representation this DB is using */
    if (InitNullValueForDB(interp, vtdbP)) {
        VTDBUnref(vtdbP, 1);
        return TCL_ERROR;
    }

    if (sqlite3_create_module_v2(sqliteP, PACKAGE_NAME, &sqlite_vtable_methods,
                                 vtdbP, VTDBDetachSqliteCallback)
        != SQLITE_OK) {
        VTDBUnref(vtdbP, 1);
        return ReturnSqliteError(interp, sqliteP, NULL);
    }
    
    /* Now add to the table of connections for this interpreter */
    Tcl_SetHashValue(Tcl_CreateHashEntry(&vticP->dbconns, sqliteP, &new_entry),
                     vtdbP);

    /* Link up various structures */
    vtdbP->sqliteP = sqliteP;
    vtdbP->vticP = vticP;
    VTICRef(vticP, 1); /* Since dbP refers to it. TBD - circular dependency? */
    VTDBRef(vtdbP, 2); /* Hash table ref + ref from sqlite */
    
    return TCL_OK;
}
int sqlite3_intarray_register(sqlite3 *db, sqlite3_intarray_module **ppReturn) {
  int rc = SQLITE_OK;
#ifndef SQLITE_OMIT_VIRTUALTABLE
  sqlite3_intarray_module *p;
  p = (sqlite3_intarray_module*)sqlite3_malloc(sizeof(*p));
  if (!p) return SQLITE_NOMEM;
  p->db = db;
  rc = intarrayMapInit(&p->arrayMap);
  if (rc != SQLITE_OK) return rc;
  rc = sqlite3_create_module_v2(db, MODULE_NAME, &intarrayModule, p, sqlite3_module_free);
  if (rc == SQLITE_OK) {
    *ppReturn = p;
  }
#endif
  return rc;
}
Ejemplo n.º 10
0
int fs_create_module(sqlite3 *db, const char *path)
{
	char *root = sqlite3_mprintf("%s", path);
	return sqlite3_create_module_v2(db, "sqlitefs", &fs_module, root, sqlite3_free);
}
Ejemplo n.º 11
0
int recoverVtableInit(sqlite3 *db){
  return sqlite3_create_module_v2(db, "recover", &recoverModule, NULL, 0);
}