Small. Fast. Reliable.
Choose any three.

## SQLite C Interface

## Virtual Table Instance Object

>     struct sqlite3_vtab {
>       const sqlite3_module *pModule;  /* The module for this virtual table */
>       int nRef;                       /* Number of open cursors */
>       char *zErrMsg;                  /* Error message from sqlite3_mprintf() */
>       /* Virtual table implementations will typically add additional fields */
>     };

Every virtual table module implementation uses a subclass of this object to describe a particular instance of the virtual table. Each subclass will be tailored to the specific needs of the module implementation. The purpose of this superclass is to define certain fields that are common to all module implementations.

Virtual tables methods can set an error message by assigning a string obtained from sqlite3_mprintf() to zErrMsg. The method should take care that any prior string is freed by a call to sqlite3_free() prior to assigning a new string to zErrMsg. After the error message is delivered up to the client application, the string will be automatically freed by sqlite3_free() and the zErrMsg field will be zeroed.

See also lists of Objects, Constants, and Functions.