Virtual Table Object
\ struct sqlite3_module {\ int iVersion;\ int (*xCreate)(sqlite3*, void *pAux,\ int argc, const char *const*argv,\ sqlite3_vtab **ppVTab, char**);\ int (*xConnect)(sqlite3*, void *pAux,\ int argc, const char *const*argv,\ 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.