![]() |
|
|||
WebMoney: WMZ Z294115950220 WMR R409981405661 WME E134003968233 |
Visa 4274 3200 2453 6495 |
sqlite3_wal_checkpoint_v2(D,X,M,L,C) управляет операцией по контрольной
точке на базе данных X из соединения с базой данных D
в методе M. Информация о статусе написана в ответ в виде целых чисел, на
которые указывают L и C. Параметр M должен быть действительным
режимом контрольной точки: Если pnLog не NULL, *pnLog установлен в общее количество структур в файле
журнала или в -1, если контрольная точка не могла бы работать
из-за ошибки или потому что база данных не находится в
режиме WAL. Если pnCkpt не NULL, *pnCkpt
установлен в общее количество структур в файле журнала (включая любые,
которые уже были сохранены прежде чем функция была вызвана) или в -1,
если контрольная точка не могла бы работать
из-за ошибки или потому что база данных не находится в режиме WAL.
Обратите внимание на то, что после успешного завершения
SQLITE_CHECKPOINT_TRUNCATE, файл журнала будет усечен к нулю байт, таким
образом, *pnLog и *pnCkpt установлены в 0. Все вызовы получают исключительную "контрольную точку",
на файле базы данных. Если какой-либо другой процесс управляет операцией по
контрольной точке в то же время, блокировка не может быть получена, и
вернется SQLITE_BUSY. Даже если будет формируемый занятый обработчик,
это не будет вызвано в этом случае. Режимы SQLITE_CHECKPOINT_FULL, RESTART и TRUNCATE
также получают исключительную блокировку записи файла базы данных.
Если блокировка записи не может быть немедленно получена, а занятый
обработчик формируется, он вызван, и блокировка записи
повторена до возврата обработчиком 0 или до успешного полученения блокировки.
Занятый обработчик также вызван, ожидая чтения базы данных, как описано выше.
Если занятый обработчик возвращает 0, прежде чем блокировка записи
будет получена или ожидая чтения базы данных,
операция контрольной точки выполняется от того пункта таким же образом как
SQLITE_CHECKPOINT_PASSIVE, сохраняя как можно больше структур, не блокируя
ничего дальше. SQLITE_BUSY возвращен в этом случае. Если zDb = NULL или указывает на строку нулевой длины, то указанная
операция предпринята на всех базах данных WAL
присоединенных к
соединению db.
В этом случае значения, написанные, чтобы произвести параметры *pnLog и
*pnCkpt, не определены. Если с ошибкой SQLITE_BUSY сталкиваются, обрабатывая
одну или больше приложенных баз данных WAL, операция все еще предпринята на
любых остающихся приложенных базах данных, а SQLITE_BUSY возвращен в конце.
Если какая-либо другая ошибка происходит, обрабатывая приложенную базу
данных, обработка остановлена, а код ошибки немедленно возвращен.
Если ни с какой ошибкой (SQLITE_BUSY или иной) не сталкиваются, обрабатывая
приложенные базы данных, SQLITE_OK возвращен. Если zDb является названием приложенной базы данных, которая не находится
в режиме WAL, SQLITE_OK возвращен, *pnLog и *pnCkpt установлены в -1.
Если zDb не NULL (или строка нулевой длины) и не является названием никакой
приложенной базы данных, SQLITE_ERROR возвращен. Если это не возвращает SQLITE_MISUSE, sqlite3_wal_checkpoint_v2()
устанавливает информацию об ошибке, которая запрашивается
sqlite3_errcode() и
sqlite3_errmsg(). PRAGMA wal_checkpoint
может использоваться, чтобы вызвать этот интерфейс от SQL.
Choose any three.
SQLite C Interface
Контрольная точка базы данных
int sqlite3_wal_checkpoint_v2(
sqlite3 *db, /* Database handle */
const char *zDb, /* Name of attached database (or NULL) */
int eMode, /* SQLITE_CHECKPOINT_* value */
int *pnLog, /* OUT: Size of WAL log in frames */
int *pnCkpt /* OUT: Total number of frames checkpointed */
);