Имя папки, содержащей временные файлы
SQLITE_EXTERN char *sqlite3_temp_directory;
Если этой глобальной переменной присваивается строка, являющаяся именем папки (также известной как каталог), все временные файлы, созданные SQLite при использовании встроенного VFS, будут размещены в этой папке. Если эта переменная является указателем NULL, SQLite ищет подходящий каталог для временных файлов.
Приложениям настоятельно не рекомендуется использовать эту глобальную переменную. Она требуется для установки временной папки в Windows Runtime (WinRT). Но на всех остальных платформах приложениям настоятельно рекомендуется не читать и не записывать эту переменную. Эта глобальная переменная является артефактом, существующим для обеспечения обратной совместимости с устаревшими приложениями, и её следует избегать в новых проектах.
Эта переменная не должна читаться или изменяться более чем в одном потоке одновременно. Не следует читать или изменять эту переменную, если в другом потоке одновременно используется подключение к базе данных. Предполагается, что эта переменная устанавливается один раз во время инициализации процесса и до вызова каких-либо функций интерфейса SQLite, и что после этого она не меняется.
Предикат temp_store_directory может изменять эту переменную и привести к тому, что она будет указывать на память, полученную из sqlite3_malloc. Кроме того, предикат temp_store_directory всегда предполагает, что любая строка, на которую указывает эта переменная, хранится в памяти, полученной из sqlite3_malloc, и предикат может попытаться освободить эту память с помощью sqlite3_free. Следовательно, если эта переменная изменяется напрямую, она должна либо быть установлена в NULL, либо указывать на память, полученную из sqlite3_malloc, иначе следует избегать использования предиката temp_store_directory. За исключением случаев, когда об этом запрошено предикатом temp_store_directory, SQLite не освобождает память, на которую указывает sqlite3_temp_directory. Если приложение хочет, чтобы эта память была освобождена, оно должно сделать это самостоятельно, позаботившись о том, чтобы это произошло только после уничтожения всех объектов подключения к базе данных.
Примечание для пользователей Windows Runtime: Временный каталог должен быть установлен до вызова sqlite3_open или sqlite3_open_v2. В противном случае различные функции, требующие использования временных файлов, могут потерпеть неудачу. Вот пример того, как это сделать с помощью C++ в Windows Runtime:
LPCWSTR zPath = Windows::Storage::ApplicationData::Current->
TemporaryFolder->Path->Data();
char zPathBuf[MAX_PATH + 1];
memset(zPathBuf, 0, sizeof(zPathBuf));
WideCharToMultiByte(CP_UTF8, 0, zPath, -1, zPathBuf, sizeof(zPathBuf),
NULL, NULL);
sqlite3_temp_directory = sqlite3_mprintf("%s", zPathBuf);
См. также списки Объектов, Констант и Функций.
SQLite is in the Public Domain.
https://sqlite.org/c3ref/temp_directory.html