|
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); };
这个结构体有时称为“虚表模块”,定义了一个虚表的实现。这个结构体由这个模块的大部分函数构成。
This structure, sometimes called a "virtual table module",
defines the implementation of a virtual tables.
This structure consists mostly of methods for the module.
创建一个虚表模块,需要填写这个结构体的一个持久化实例,并将这个实例的指针传递给sqlite3_create_module()或sqlite3_create_module_v2()。注册以后会一直有效,直到被替换为其他不同的模块或者数据库连接关闭。一旦这个结构体被任何数据库连接注册了,其中的内容就不能修改了。
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.
另行参见Objects、Constants和Functions的列表。
See also lists of
Objects,
Constants, and
Functions.