SQLITE3_MODULE(3) | Library Functions Manual | SQLITE3_MODULE(3)

# NAME

`sqlite3_module` — virtual table object

# SYNOPSIS

`#include <sqlite3.h>`

struct sqlite3_module;

# DESCRIPTION

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.

# IMPLEMENTATION NOTES

These declarations were extracted from the interface documentation at line 7273.

    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);
    };

# SEE ALSO

sqlite3(3), sqlite3_create_module(3)

January 24, 2024 | NetBSD 11.0