Ограничения во время выполнения
int sqlite3_limit(sqlite3*, int id, int newVal);
Этот интерфейс позволяет ограничивать размер различных конструкций на основе каждого соединения. Первый параметр — это соединение с базой данных, для которого необходимо установить или запросить ограничение. Второй параметр — один из категорий ограничений, определяющих класс конструкций, для которых необходимо ограничить размер. Третий параметр — новое ограничение для этой конструкции.
Если новое ограничение — отрицательное число, ограничение не изменяется. Для каждой категории ограничений SQLITE_LIMIT_NAME существует жесткое верхнее ограничение, установленное во время компиляции с помощью макроса препроцессора C, называемого SQLITE_MAX_NAME. (Подстрока «_LIMIT_» в имени заменена на «_MAX_».) Попытки увеличить ограничение выше его жесткого верхнего предела молча усекаются до жесткого верхнего предела.
Независимо от того, было ли ограничение изменено или нет, интерфейс sqlite3_limit() возвращает предыдущее значение ограничения. Следовательно, чтобы найти текущее значение ограничения, не изменяя его, просто вызовите этот интерфейс, установив третий параметр в -1.
Ограничения во время выполнения предназначены для использования в приложениях, которые управляют как собственной внутренней базой данных, так и базами данных, управляемыми недоверенными внешними источниками. Примером такого приложения может служить веб-браузер, у которого есть собственные базы данных для хранения истории и отдельные базы данных, управляемые приложениями JavaScript, загруженными из Интернета. Внутренние базы данных могут иметь большие значения по умолчанию. Базы данных, управляемые внешними источниками, могут иметь гораздо меньшие ограничения, предназначенные для предотвращения атаки типа «отказ в обслуживании». Разработчики также могут использовать интерфейс sqlite3_set_authorizer() для дополнительного управления недоверенными SQL-запросами. Размер базы данных, созданной недоверенным скриптом, может быть ограничен с помощью max_page_count PRAGMA.
В будущих версиях могут быть добавлены новые категории ограничений во время выполнения.
См. также списки объектов, констант и функций.
SQLite is in the Public Domain.
https://sqlite.org/c3ref/limit.html