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 */ };
Каждый виртуальный модуль таблицы реализует подкласс этого объекта, чтобы описать конкретный экземпляр виртуальной таблицы. Каждый подкласс будет приспособлен к определенным потребностям внедрения модуля. Цель этого суперкласса состоит в том, чтобы определить определенные области, которые характерны для всех внедрений модуля.
Виртуальные методы могут установить сообщение об ошибке, назначив последовательность, полученную из sqlite3_mprintf() в zErrMsg. Метод должен заботиться, что любая предшествующая последовательность освобождена вызовом sqlite3_free() до назначения новой последовательности zErrMsg. После того, как сообщение об ошибке дойдет до клиентского приложения, последовательность будет автоматически освобождена sqlite3_free(), а поле zErrMsg обнуляется.