Выберите язык

Выберите язык

Состоялся релиз легковесной СУБД SQLite 3.50, оформленной в виде подключаемой библиотеки. Новая версия включает множество улучшений производительности, новые SQL-функции и усовершенствования безопасности для работы с базами данных.

sqlite_3.50_01.jpg

Команда разработчиков 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 доступна для скачивания на официальном сайте проекта.

В случае каких-либо проблем напишите нам, мы поможем быстро и качественно!