Пределы в SQLite
«Пределы» в контексте данной статьи означают размеры или количества, которые нельзя превышать. Нас интересуют такие вещи, как максимальное количество байтов в BLOB или максимальное количество столбцов в таблице.
SQLite изначально разрабатывался с политикой избегания произвольных ограничений. Конечно, у каждой программы, работающей на машине с конечной памятью и дисковым пространством, есть определенные ограничения. Но в SQLite эти ограничения не были четко определены. Политика заключалась в том, что если он помещается в память и вы можете считать его с помощью 32-разрядного целого числа, то он должен работать.
К сожалению, политика без ограничений создает проблемы. Поскольку верхние границы не были четко определены, они не тестировались, и часто возникали ошибки (включая возможные эксплойты безопасности) при доведении SQLite до крайностей. По этой причине более новые версии SQLite имеют четко определенные ограничения, и эти ограничения тестируются как часть набора тестов.
Начиная с версии 3.6.19 (все статистические данные в отчете соответствуют этой версии SQLite), библиотека SQLite состоит из приблизительно 65,7 KSLOC кода C. (KSLOC означает тысячи «строк исходного кода» или, другими словами, строк кода, исключая пустые строки и комментарии.) Для сравнения, у проекта в 690 раз больше тестового кода и тестовых сценариев - 45409,7 KSLOC.