Десериализация базы данных
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 of 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. Если S — нулевой указатель, используется главная база данных. Размер сериализованной базы данных 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. Чтобы обойти это ограничение, приложение может перед вызовом sqlite3_deserialize(D,S,P,N,M,F) установить номера версии формата файла (байты 18 и 19) входной базы данных P в значение 0x01, принудительно переведя файл базы данных в режим отката.
Если 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