Virtual Table Object (original) (raw)

struct sqlite3_module { int iVersion; int (xCreate)(sqlite3, void *pAux, int argc, const char constargv, sqlite3_vtab ppVTab, char); int (xConnect)(sqlite3, void *pAux, int argc, const char constargv, sqlite3_vtab ppVTab, char); int (*xBestIndex)(sqlite3_vtab pVTab, sqlite3_index_info); int (*xDisconnect)(sqlite3_vtab *pVTab); int (*xDestroy)(sqlite3_vtab *pVTab); int (*xOpen)(sqlite3_vtab *pVTab, sqlite3_vtab_cursor **ppCursor); int (xClose)(sqlite3_vtab_cursor); int (xFilter)(sqlite3_vtab_cursor, int idxNum, const char *idxStr, int argc, sqlite3_value *argv); int (xNext)(sqlite3_vtab_cursor); int (xEof)(sqlite3_vtab_cursor); int (xColumn)(sqlite3_vtab_cursor, sqlite3_context, int); int (xRowid)(sqlite3_vtab_cursor, sqlite3_int64 *pRowid); int (*xUpdate)(sqlite3_vtab *, int, sqlite3_value **, sqlite3_int64 *); int (*xBegin)(sqlite3_vtab *pVTab); int (*xSync)(sqlite3_vtab *pVTab); int (*xCommit)(sqlite3_vtab *pVTab); int (*xRollback)(sqlite3_vtab *pVTab); int (*xFindFunction)(sqlite3_vtab *pVtab, int nArg, const char zName, void (pxFunc)(sqlite3_context,int,sqlite3_value), void **ppArg); int (*xRename)(sqlite3_vtab *pVtab, const char zNew); / The methods above are in version 1 of the sqlite_module object. Those ** below are for version 2 and greater. */ int (*xSavepoint)(sqlite3_vtab *pVTab, int); int (*xRelease)(sqlite3_vtab *pVTab, int); int (*xRollbackTo)(sqlite3_vtab pVTab, int); / The methods above are in versions 1 and 2 of the sqlite_module object. ** Those below are for version 3 and greater. / int (xShadowName)(const char); / The methods above are in versions 1 through 3 of the sqlite_module object. ** Those below are for version 4 and greater. */ int (*xIntegrity)(sqlite3_vtab *pVTab, const char *zSchema, const char *zTabName, int mFlags, char **pzErr); };

This structure, sometimes called a "virtual table module", defines the implementation of a virtual table. This structure consists mostly of methods for the module.

A virtual table module is created by filling in a persistent instance of this structure and passing a pointer to that instance to sqlite3_create_module() or sqlite3_create_module_v2(). The registration remains valid until it is replaced by a different module or until the database connection closes. The content of this structure must not change while it is registered with any database connection.