Десериализация базы данных
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