NAME
sqlite3_snapshot_open —
Start a read
transaction on an historical snapshot
SYNOPSIS
int
sqlite3_snapshot_open(
sqlite3 *db,
const char *zSchema,
sqlite3_snapshot
*pSnapshot );
DESCRIPTION
The sqlite3_snapshot_open(D,S,P) interface starts a read transaction for schema
S of database connection D such that the read transaction refers to historical
snapshot P, rather than the most recent change to the database. The
sqlite3_snapshot_open() interface returns SQLITE_OK on success or an
appropriate error code if it fails.
In order to succeed, a call to sqlite3_snapshot_open(D,S,P) must be the first
operation following the BEGIN that takes the schema S out of autocommit mode.
In other words, schema S must not currently be in a transaction for
sqlite3_snapshot_open(D,S,P) to work, but the database connection D must be
out of autocommit mode. A snapshot will fail to open if it has been
overwritten by a checkpoint. A call to sqlite3_snapshot_open(D,S,P) will fail
if the database connection D does not know that the database file for schema S
is in WAL mode. A database connection might not know that the database file is
in WAL mode if there has been no prior I/O on that database connection, or if
the database entered WAL mode after the most recent I/O on the database
connection. (Hint: Run "PRAGMA application_id" against a newly
opened database connection in order to make it ready to use snapshots.)
The sqlite3_snapshot_open() interface is only available when the
SQLITE_ENABLE_SNAPSHOT compile-time option is used.
SEE ALSO
sqlite3_get_autocommit(3),
sqlite3(3),
sqlite3_snapshot(3),
sqlite3_snapshot_open(3)