Virtual Table Object
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
};
这种结构有时被称为“虚拟表模块”,它定义了虚拟表的实现。该结构主要由模块的方法组成。
通过填充此结构的持久实例并将指向该实例的指针传递给sqlite3_create_module()或sqlite3_create_module_v2()来创建虚拟表模块。注册保持有效,直到它被替换为不同的模块或数据库连接关闭。在向任何数据库连接注册时,此结构的内容不得更改。
SQLite is in the Public Domain.