NAME
sqlite3_snapshot_get —
Record A
Database Snapshot
SYNOPSIS
int
sqlite3_snapshot_get(
sqlite3 *db,
const char *zSchema,
sqlite3_snapshot
**ppSnapshot );
DESCRIPTION
The sqlite3_snapshot_get(D,S,P) interface attempts to make a new
sqlite3_snapshot object that records the current state of schema S in database
connection D. On success, the sqlite3_snapshot_get(D,S,P) interface writes a
pointer to the newly created sqlite3_snapshot object into *P and returns
SQLITE_OK. If there is not already a read-transaction open on schema S when
this function is called, one is opened automatically.
The following must be true for this function to succeed. If any of the following
statements are false when sqlite3_snapshot_get() is called, SQLITE_ERROR is
returned. The final value of *P is undefined in this case.
- The database handle must be in autocommit mode.
- Schema S of database connection D must be a WAL mode
database.
- There must not be a write transaction open on schema S
of database connection D.
- One or more transactions must have been written to the
current wal file since it was created on disk (by any connection). This
means that a snapshot cannot be taken on a wal mode database with no wal
file immediately after it is first opened. At least one transaction must
be written to it first.
This function may also return SQLITE_NOMEM. If it is called with the database
handle in autocommit mode but fails for some other reason, whether or not a
read transaction is opened on schema S is undefined.
The sqlite3_snapshot object returned from a successful call to
sqlite3_snapshot_get() must be freed using sqlite3_snapshot_free() to avoid a
memory leak.
The sqlite3_snapshot_get() 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_free(3),
sqlite3_snapshot_get(3)