Spec-Zone.ru › SQLite

Десериализация базы данных

int sqlite3_deserialize(
  sqlite3 *db,            /* The database connection */
  const char *zSchema,    /* Which DB to reopen with the deserialization */
  unsigned char *pData,   /* The serialized database content */
  sqlite3_int64 szDb,     /* Number bytes in the deserialization */
  sqlite3_int64 szBuf,    /* Total size of buffer pData[] */
  unsigned mFlags         /* Zero or more SQLITE_DESERIALIZE_* flags */
);

Интерфейс sqlite3_deserialize(D,S,P,N,M,F) вызывает отключение соединения базы данных D от базы данных S и затем повторное открытие S в качестве базы данных в памяти на основе сериализации, содержащейся в P. Сериализованная база данных P имеет размер N байт. M — размер буфера P, который может быть больше, чем N. Если M больше, чем N, и в F не установлен бит SQLITE_DESERIALIZE_READONLY, SQLite разрешается добавлять содержимое в базу данных в памяти, при условии, что общий размер не превысит M байт.

Если в F установлен бит SQLITE_DESERIALIZE_FREEONCLOSE, SQLite вызовет sqlite3_free() для буфера сериализации при закрытии соединения с базой данных. Если установлен бит SQLITE_DESERIALIZE_RESIZEABLE, SQLite попытается увеличить размер буфера с помощью sqlite3_realloc64(), если записи в базе данных приведут к увеличению размера больше, чем M байт.

Приложения не должны изменять буфер P или делать его недействительным до закрытия соединения с базой данных D.

Интерфейс sqlite3_deserialize() завершится с ошибкой SQLITE_BUSY, если база данных в настоящее время находится в транзакции чтения или участвует в операции резервного копирования.

Десериализация в базу данных TEMP невозможна. Если аргумент S в sqlite3_deserialize(D,S,P,N,M,F) равен "temp", функция возвращает SQLITE_ERROR.

Десериализованная база данных не должна находиться в режиме WAL. Если база данных находится в режиме WAL, любая попытка использовать файл базы данных приведет к ошибке SQLITE_CANTOPEN. Приложение может установить значения номеров версий формата файла (байты 18 и 19) входной базы данных P в 0x01 перед вызовом sqlite3_deserialize(D,S,P,N,M,F), чтобы перевести файл базы данных в режим отката и обойти это ограничение.

Если sqlite3_deserialize(D,S,P,N,M,F) завершается неудачно по какой-либо причине и в аргументе F установлен бит SQLITE_DESERIALIZE_FREEONCLOSE, то sqlite3_free() вызывается для аргумента P перед возвратом.

Этот интерфейс опущен, если SQLite скомпилирован с опцией SQLITE_OMIT_DESERIALIZE.

См. также списки Объектов, Констант и Функций.

SQLite is in the Public Domain.
https://sqlite.org/c3ref/deserialize.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API