Состоялся релиз легковесной СУБД SQLite 3.50, оформленной в виде подключаемой библиотеки. Новая версия включает множество улучшений производительности, новые SQL-функции и усовершенствования безопасности для работы с базами данных.
G. Ostrov
Команда разработчиков SQLite выпустила новую версию 3.50 популярной встраиваемой базы данных. SQLite остается одной из самых широко используемых СУБД в мире благодаря своей простоте, надежности и отсутствию лицензионных ограничений.
О проекте SQLite
SQLite представляет собой легковесную СУБД, реализованную в виде подключаемой библиотеки. Исходный код проекта написан на языке C и распространяется как общественное достояние (public domain), что позволяет использовать его без ограничений и безвозмездно в любых целях. Финансовую поддержку команды разработчиков осуществляет специально созданный консорциум.
Ключевые нововведения в SQLite 3.50
Улучшения в управлении блокировками
Добавлена новая функция sqlite3_setlk_timeout()
, которая позволяет устанавливать отдельный таймаут, отличный от sqlite3_busy_timeout()
. Это обеспечивает более гибкое управление блокировками в многопользовательских приложениях.
Работа с комментариями
Ограничение SQLITE_DBCONFIG_ENABLE_COMMENTS
, добавленное в предыдущем выпуске, было немного ослаблено. Теперь комментарии всегда разрешены при чтении схемы из уже существующей таблицы sqlite_schema
, а блокируются только в новом SQL-коде.
Новые SQL-функции
В SQLite 3.50 добавлены встроенные SQL-функции:
unistr()
— для работы с Unicode-строкамиunistr_quote()
— для экранирования Unicode-символов
В преобразованиях %Q и %q встроенной функции printf()
флаг альтернативной формы (#) теперь преобразовывает управляющие символы в бэкслэш-эскейпы, подходящие для функции unistr()
.
Улучшения консольной утилиты
Консольная утилита SQLite получила несколько важных улучшений:
- Запрещен прямой вывод большинства управляющих символов для повышения безопасности
- В выводе команды
.dump
используется новая SQL-функцияunistr()
для кодирования специальных символов - Улучшено форматирование сложных частичных индексов в выводе команды
.schema --indent
JSON и производительность
Версия 3.50 включает значительные улучшения в работе с JSON:
- Обеспечено соблюдение ограничения JSON5, согласно которому за символом \0 не должна следовать цифра
- Исправлена ошибка в функции
json_group_object(LABEL,VALUE)
- Оптимизированы функции
jsonb_set()
иjsonb_replace()
Платформенная совместимость
Улучшена поддержка сборки SQLite в различных средах:
- Cygwin и MinGW
- Termux (Android)
- Другие POSIX-совместимые системы
JavaScript/WASM версия
В JavaScript/WASM версии исправлена давняя ошибка вычисления контрольной суммы имени файла в VFS OPFS SAHPool. Важно отметить, что базы данных, созданные в этой VFS в версии 3.50.0+, не могут быть прочитаны более старыми версиями, однако 3.50.0 обратно совместима с существующими базами данных.
Дополнительные улучшения
Помимо основных функций, в новой версии:
- Улучшена утилита синхронизации БД
sqlite3_rsync
- Исправлены опечатки в документации и комментариях к исходному коду
- Внесены различные улучшения производительности
SQLite 3.50 доступна для скачивания на официальном сайте проекта.
В случае каких-либо проблем напишите нам, мы поможем быстро и качественно!