NAME
sqlite3_auto_extension —
Automatically
Load Statically Linked Extensions
SYNOPSIS
int
sqlite3_auto_extension(
void(*xEntryPoint)(void));
DESCRIPTION
This interface causes the xEntryPoint() function to be invoked for each new
database connection that is created. The idea here is that xEntryPoint() is
the entry point for a statically linked SQLite extension that is to be
automatically loaded into all new database connections.
Even though the function prototype shows that xEntryPoint() takes no arguments
and returns void, SQLite invokes xEntryPoint() with three arguments and
expects an integer result as if the signature of the entry point where as
follows:
int xEntryPoint( sqlite3 *db, const char **pzErrMsg,
const struct sqlite3_api_routines *pThunk );
If the xEntryPoint routine encounters an error, it should make *pzErrMsg point
to an appropriate error message (obtained from sqlite3_mprintf()) and return
an appropriate error code. SQLite ensures that *pzErrMsg is NULL before
calling the xEntryPoint(). SQLite will invoke sqlite3_free() on *pzErrMsg
after xEntryPoint() returns. If any xEntryPoint() returns an error, the
sqlite3_open(), sqlite3_open16(), or sqlite3_open_v2() call that provoked the
xEntryPoint() will fail.
Calling sqlite3_auto_extension(X) with an entry point X that is already on the
list of automatic extensions is a harmless no-op. No entry point will be
called more than once for each database connection that is opened.
SEE ALSO
sqlite3(3),
sqlite3_cancel_auto_extension(3),
sqlite3_malloc(3),
sqlite3_mprintf(3),
sqlite3_open(3),
sqlite3_reset_auto_extension(3)