RussianLDP Рейтинг@Mail.ru
WebMoney: 
WMZ Z294115950220 
WMR R409981405661 
WME E134003968233 
Visa 
4274 3200 2453 6495 

Small. Fast. Reliable.
Choose any three.

SQLite C Interface

Параметры конфигурации соединения с базой данных

#define SQLITE_DBCONFIG_MAINDBNAME            1000 /* const char* */
#define SQLITE_DBCONFIG_LOOKASIDE             1001 /* void* int int */
#define SQLITE_DBCONFIG_ENABLE_FKEY           1002 /* int int* */
#define SQLITE_DBCONFIG_ENABLE_TRIGGER        1003 /* int int* */
#define SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER 1004 /* int int* */
#define SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION 1005 /* int int* */
#define SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE      1006 /* int int* */
#define SQLITE_DBCONFIG_ENABLE_QPSG           1007 /* int int* */
#define SQLITE_DBCONFIG_TRIGGER_EQP           1008 /* int int* */
#define SQLITE_DBCONFIG_RESET_DATABASE        1009 /* int int* */
#define SQLITE_DBCONFIG_DEFENSIVE             1010 /* int int* */
#define SQLITE_DBCONFIG_WRITABLE_SCHEMA       1011 /* int int* */
#define SQLITE_DBCONFIG_LEGACY_ALTER_TABLE    1012 /* int int* */
#define SQLITE_DBCONFIG_DQS_DML               1013 /* int int* */
#define SQLITE_DBCONFIG_DQS_DDL               1014 /* int int* */
#define SQLITE_DBCONFIG_ENABLE_VIEW           1015 /* int int* */
#define SQLITE_DBCONFIG_LEGACY_FILE_FORMAT    1016 /* int int* */
#define SQLITE_DBCONFIG_TRUSTED_SCHEMA        1017 /* int int* */
#define SQLITE_DBCONFIG_STMT_SCANSTATUS       1018 /* int int* */
#define SQLITE_DBCONFIG_REVERSE_SCANORDER     1019 /* int int* */
#define SQLITE_DBCONFIG_MAX                   1019 /* Largest DBCONFIG */

Эти константы это доступные параметры конфигурации, которые могут быть переданы как второй аргумент sqlite3_db_config().

Новые параметры конфигурации могут быть добавлены в будущих выпусках SQLite. Могли бы быть прекращены существующие параметры конфигурации. Запросы должны проверить код возврата от sqlite3_db_config(), чтобы удостовериться, что запрос работал. sqlite3_db_config() возвратит ненулевой код ошибки, если неподдержанный параметр конфигурации будет вызван.

SQLITE_DBCONFIG_LOOKASIDE
Этот выбор берет три дополнительных аргумента, которые определяют настройку распределителя памяти для соединения с базой данных. Первый аргумент (третий параметр sqlite3_db_config()) это указатель на буфер памяти, чтобы использовать для сохраняющей памяти. Первый аргумент после SQLITE_DBCONFIG_LOOKASIDE может быть NULL, в этом случае, SQLite ассигнует сам буфер предыстории, используя sqlite3_malloc(). Второй аргумент это размер каждого места буфера предыстории. Третий аргумент количество мест. Размер буфера в первом аргументе должен быть больше чем или равным произведению второго и третьего аргументов. Буфер должен быть выровнен с 8-байтовой границей. Если второй аргумент SQLITE_DBCONFIG_LOOKASIDE не кратное число 8, это внутренне округлено в меньшую сторону к следующему меньшему числу, кратному 8. Сохраняющая конфигурация памяти для соединения с базой данных может быть изменена только когда та связь в настоящее время не использует сохраняющую память, или другими словами когда "текущее значение", возвращенное sqlite3_db_status(D, SQLITE_DBSTATUS_LOOKASIDE_USED, ...) = 0. Любая попытка изменить сохраняющую конфигурацию памяти, когда сохраняющая память используется, оставляет конфигурацию без изменений и возвращает SQLITE_BUSY.

SQLITE_DBCONFIG_ENABLE_FKEY
Этот выбор используется, чтобы позволить или отключить осуществление ограничений внешнего ключа. Должно быть два дополнительных аргумента. Первый аргумент это целое число, которое является 0, чтобы отключить осуществление FK, положительное, чтобы позволить осуществление FK, или отрицательное, чтобы оставить осуществление FK без изменений. Второй параметр это указатель на целое число, в которое написан 0 или 1, чтобы указать, выключено ли осуществление FK. Второй параметр может быть NULL, в этом случае урегулирование осуществления FK не отчитывается.

SQLITE_DBCONFIG_ENABLE_TRIGGER
Этот выбор используется, чтобы позволить или отключить триггеры. Должно быть два дополнительных аргумента. Первый аргумент это целое число, которое является 0, чтобы отключить триггеры, положительное, чтобы включить, или отрицательное, чтобы оставить урегулирование без изменений. Второй параметр это указатель на целое число, в которое написан 0 или 1, чтобы указать, отключены ли триггеры. Второй параметр может быть NULL, в этом случае урегулирование не отчитывается.

Первоначально этот выбор отключил все триггеры. Однако начиная с версии 3.35.0 SQLite, триггеры TEMP все еще позволены, даже если этот выбор выключен. Другими словами, этот выбор теперь отключает только триггеры в главной схеме базы данных или в схемах баз данных ATTACH.

SQLITE_DBCONFIG_ENABLE_VIEW
Этот выбор используется, чтобы позволить или отключить обзоры. Должно быть два дополнительных аргумента. Первый аргумент это целое число, которое является 0, чтобы отключить обзоры, положительное, чтобы включить, или отрицательное, чтобы оставить урегулирование без изменений. Второй параметр это указатель на целое число, в которое написан 0 или 1, чтобы указать, отключены ли триггеры. Второй параметр может быть NULL, в этом случае урегулирование не отчитывается.

Первоначально этот выбор отключил все обзоры. Однако начиная с версии 3.35.0 SQLite, обзоры TEMP все еще позволены, даже если этот выбор выключен. Другими словами, этот выбор теперь отключает только обзоры в главной схеме базы данных или в схемах баз данных ATTACH.

SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER
Этот выбор используется, чтобы позволить или отключить функцию fts3_tokenizer(), которая является частью полнотекстового расширения поисковой системы FTS3. Должно быть два дополнительных аргумента. Первый аргумент это которое является 0, чтобы отключить, положительное, чтобы включить, или отрицательное, чтобы оставить урегулирование без изменений. Второй параметр это указатель на целое число, в которое написан 0 или 1, чтобы указать, отключено ли. Второй параметр может быть NULL, в этом случае урегулирование не отчитывается.

SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION
Этот выбор используется, чтобы позволить или отключить sqlite3_load_extension() независимо от функции SQL load_extension(). API sqlite3_enable_load_extension() позволяет или выключает вместе C API sqlite3_load_extension() и функцию SQL load_extension() . Должно быть два дополнительных аргумента. Когда первый аргумент равняется 1, тогда только C-API позволяют, и функция SQL остается отключенной. Если первый аргумент 0, то C API и функция SQL выключены. Если первый аргумент-1, то никакие изменения не внесены. Второй параметр это указатель на целое число, в которое написан 0 или 1, чтобы указать, отключен ли интерфейс sqlite3_load_extension(). Второй параметр может быть NULL, в этом случае новое урегулирование не отчитывается.

SQLITE_DBCONFIG_MAINDBNAME
Этот выбор используется, чтобы изменить название "main" схемы базы данных. Единственный аргумент это указатель на постоянную последовательность UTF8, которая станет новым названием схемы вместо "main". SQLite не делает копию новой последовательности названия схемы, таким образом, применение должно гарантировать, что аргумент, переданный в этот выбор DBCONFIG неизменен, пока соединение с базой данных не закрывается.

SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE
Обычно, когда база данных в wal-режиме закрыта или отделена от обработчика базы данных, SQLite проверяет, будет ли это означать, что теперь нет никаких связей вообще с базой данных. Если так, это выполняет операцию по контрольной точке прежде, чем закрыть связь. Этот выбор может использоваться, чтобы отвергнуть это поведение. Первый параметр, переданный к этой операции, является целым числом: положительным, чтобы отключить контрольные точки на завершении, ноль (умолчание), чтобы позволить их, и отрицательное, чтобы оставить урегулирование без изменений. Второй параметр это указатель на целое число, в которое написан 0 или 1, чтобы указать, были ли контрольные точки отключены: 0, если они включены, 1, если они выключены.

SQLITE_DBCONFIG_ENABLE_QPSG
SQLITE_DBCONFIG_ENABLE_QPSG активирует или дезактивирует query planner stability guarantee (QPSG). Когда QPSG активен, единственное выполнение SQL-запроса будет всегда использовать тот же самый алгоритм независимо от значений связанных параметров. QPSG отключает некоторые оптимизации запросов, которые смотрят на значения связанных параметров, которые могут сделать некоторые запросы медленнее. Но QPSG имеет преимущество более предсказуемого поведения. С активным QPSG SQLite будет всегда использовать тот же самый план запросов, какой использовался во время тестирования в лаборатории. Первый аргумент этому урегулированию это целое число, которое является 0, чтобы отключить QPSG, положительным, чтобы позволить QPSG, или отрицательным, чтобы оставить урегулирование без изменений. Второй параметр это указатель на целое число, в которое написан 0 или 1, чтобы указать, отключен ли QPSG или позволен после этого вызова.

SQLITE_DBCONFIG_TRIGGER_EQP
По умолчанию вывод EXPLAIN QUERY PLAN не включает вывод ни для каких операций, выполненных триггерами. Этот выбор используется, чтобы установить или очистить (умолчание) флаг, который управляет этим поведением. Первый параметр, переданный к этой операции, является целым числом, положительным, чтобы включить вывод от триггеров, 0 для отключения или отрицательным, чтобы оставить урегулирование без изменений. Второй параметр это указатель на целое число, в которое написан 0 или 1, чтобы указать, был ли вывод от триггеров отключен: 0, если выключен, 1, если включен.

SQLITE_DBCONFIG_RESET_DATABASE
Установите флаг SQLITE_DBCONFIG_RESET_DATABASE и затем выполните VACUUM, чтобы перезагрузить базу данных назад к пустой базе данных без схемы и содержания. Следующий процесс работает даже на ужасно испорченном файле базы данных:
  1. Если соединение с базой данных недавно открыто, удостоверьтесь, что оно прочитало схему базы данных, вызывая sqlite3_table_column_metadata(), игнорируя любые ошибки. Этот шаг необходим только если применение желает держать базу данных в режиме WAL после сброса, если это было в режиме WAL перед сбросом.
  2. sqlite3_db_config(db, SQLITE_DBCONFIG_RESET_DATABASE, 1, 0);
  3. sqlite3_exec(db, "VACUUM", 0, 0, 0);
  4. sqlite3_db_config(db, SQLITE_DBCONFIG_RESET_DATABASE, 0, 0);
Поскольку сброс базы данных разрушительный и необратимый, процесс требует, чтобы использование этого API и многократных шагов помогло гарантировать, что это не происходит случайно. Поскольку эта особенность должна быть способна к сбросу поврежденных баз данных, а закрытие виртуальных таблиц может потребовать доступа к хранилищу, библиотека должна оставить любые установленные виртуальные таблицы, не вызывая их методы xDestroy().

SQLITE_DBCONFIG_DEFENSIVE
SQLITE_DBCONFIG_DEFENSIVE активирует или дезактивирует "защитный" флаг для соединения с базой данных. Когда защитный флаг позволен, отключены языковые опции, которые позволяют обычному SQL сознательно портить файл базы данных. Отключенные опции включают, но не ограничиваются следующим:

SQLITE_DBCONFIG_WRITABLE_SCHEMA
SQLITE_DBCONFIG_WRITABLE_SCHEMA активирует или дезактивирует флаг "writable_schema". Это имеет тот же самый эффект и логически эквивалентно PRAGMA writable_schema=ON или PRAGMA writable_schema=OFF. Первый аргумент это целое число, которое является 0, чтобы отключить writable_schema, положительным, чтобы позволить writable_schema, или отрицательным, чтобы оставить урегулирование без изменений. Второй параметр это указатель на целое число, в которое написан 0 или 1, чтобы указать, позволен ли writable_schema.

SQLITE_DBCONFIG_LEGACY_ALTER_TABLE
SQLITE_DBCONFIG_LEGACY_ALTER_TABLE активирует или дезактивирует устаревшее поведение ALTER TABLE RENAME, как это сделано до версии version 3.24.0 (2018-06-04). См. документацию на ALTER TABLE RENAME для подробностей. Эта особенность может также быть включена и использованием PRAGMA legacy_alter_table.

SQLITE_DBCONFIG_DQS_DML
SQLITE_DBCONFIG_DQS_DML активирует или дезактивирует устаревший строковый литерал в двойных кавычках только для DML, который является DELETE, INSERT, SELECT и UPDATE. Значение по умолчанию этого урегулирования определяется выбором времени компиляции -DSQLITE_DQS.

SQLITE_DBCONFIG_DQS_DDL
SQLITE_DBCONFIG_DQS активирует или дезактивирует устаревший строковый литерал в двойных кавычках для DDL, таких как CREATE TABLE и CREATE INDEX. Значение по умолчанию этого урегулирования определяется выбором времени компиляции -DSQLITE_DQS.

SQLITE_DBCONFIG_TRUSTED_SCHEMA
SQLITE_DBCONFIG_TRUSTED_SCHEMA говорит SQLite предполагать, что схемы базы данных не испорчены злонамеренным содержанием. Когда выбор SQLITE_DBCONFIG_TRUSTED_SCHEMA отключен, SQLite делает дополнительные защитные шаги, чтобы защитить применение от вреда включая:
  • Запрет использования функций SQL в триггерах, обзорах, ограничениях CHECK, DEFAULT, индексах выражения, частичных индексах или произведенных колонках, если те функции не помечены SQLITE_INNOCUOUS.
  • Запрет использования виртуальных таблиц в триггерах или обзорах, если те виртуальные таблицы не помечены SQLITE_VTAB_INNOCUOUS.
Это урегулирование по умолчанию "on" для совместимости с прежними системами, однако всем приложениям рекомендуют выключить его, если это возможно. Этим урегулированием можно также управлять, используя PRAGMA trusted_schema .

SQLITE_DBCONFIG_LEGACY_FILE_FORMAT
SQLITE_DBCONFIG_LEGACY_FILE_FORMAT активирует или дезактивирует устаревший флаг формата файла. Когда активировано, этот флаг заставляет любой недавно созданный файл базы данных иметь номер версии формата схемы (4-байтовое целое число, найденное в смещении 44 в заголовке базы данных) 1. Это в свою очередь означает, что получающийся файл базы данных будет читаемым и перезаписываемым любой версией SQLite до 3.0.0 (2004-06-18). Без этого урегулирования недавно созданные базы данных обычно непонятны версиями SQLite до 3.3.0 (2006-01-11).

Обратите внимание на то, что, когда SQLITE_DBCONFIG_LEGACY_FILE_FORMAT = on, команда VACUUM потерпит неудачу с неясной ошибкой, пытаясь обработать таблицу с произведенными колонками и спускающимся индексом. Это не считают ошибкой, начиная с версий SQLite 3.3.0, но ранее не поддерживались произведенные колонки или спускающиеся индексы.

SQLITE_DBCONFIG_STMT_SCANSTATUS
SQLITE_DBCONFIG_STMT_SCANSTATUS полезен только в сборках SQLITE_ENABLE_STMT_SCANSTATUS. В этом случае это устанавливает или очищает флаг, который позволяет сбор статистики sqlite3_stmt_scanstatus_v2(). Для статистики, которая будет собрана, флаг должен быть установлен в дескрипторе базы данных когда SQL-оператор подготовлен и когда он выполняется. Флаг установлен (сбор статистики позволен) по умолчанию. Этот выбор берет два аргумента: целое число и указатель на целое число. Первый аргумент равняется 1, 0 или -1, чтобы позволить, отключить или оставить без изменений выбор scanstatus. Если второй аргумент не NULL, то значение scanstatus после обработки первого аргумента написано в целое число, на которое указывает второй аргумент.

SQLITE_DBCONFIG_REVERSE_SCANORDER
SQLITE_DBCONFIG_REVERSE_SCANORDER изменяет порядок по умолчанию, в котором просматриваются таблицы и индексы так, чтобы просмотры начались в конце и шли к началу вместо того, чтобы начаться в начале и идти к концу. Урегулирование SQLITE_DBCONFIG_REVERSE_SCANORDER совпадает с урегулированием PRAGMA reverse_unordered_selects. Этот выбор берет два аргумента, которые являются целым числом и указателем на целое число. Первый аргумент равняется 1, 0 или -1, чтобы позволить, отключить или оставить обратный флаг просмотра без изменений, соответственно. Если второй аргумент не NULL, то 0 или 1 написан в целое число, на которое указывает второй аргумент в зависимости от того, установлен ли обратный флаг просмотра после обработки первого аргумента.