Домой Софт Релиз SQLite 3.53.0: новые функции, оптимизация и исправление ошибок

Релиз SQLite 3.53.0: новые функции, оптимизация и исправление ошибок

Обновление популярной встраиваемой СУБД с переписанным кодом обработки чисел, поддержкой новых ограничений SQL и улучшенной консольной утилитой.

Релиз SQLite 3.53.0: новые функции, оптимизация и исправление ошибок
Релиз SQLite 3.53.0: новые функции, оптимизация и исправление ошибок — иллюстрация к материалу. Источник: linux.org.ru

9 апреля состоялся релиз версии 3.53.0 компактной кроссплатформенной встраиваемой СУБД SQLite. Проект, написанный на языке C, по-прежнему распространяется на условиях общественного достояния (public domain).

Ключевые изменения и улучшения

  • Исправлена критическая ошибка WAL-reset, приводившая к повреждению базы данных в режиме WAL.
  • Внедрена библиотека форматирования результатов SQL-запросов — Query Result Formatter (QRF). Она значительно повышает удобство чтения данных на экранах с моноширинным шрифтом.
  • Для взаимодействия с QRF в интерфейс TCL добавлен метод format.

SQL и структура данных

  • ALTER TABLE: Расширены возможности команды: теперь можно добавлять и удалять ограничения NOT NULL и CHECK.
  • REINDEX EXPRESSIONS: Реализован оператор для переиндексации индексов выражений, что упрощает работу с устаревшими данными.
  • Триггеры: TEMP-триггеры теперь получили права на чтение и изменение данных в таблицах основной схемы.
  • VACUUM INTO: Команда стала гибче. При использовании URI с параметром reserve=N (от 0 до 255) объем резервирования для копии базы задается принудительно.

Обновления консольной утилиты

  • Команда .mode получила существенные доработки.
  • Благодаря QRF числа при выводе таблиц теперь автоматически выравниваются по правому краю.
  • При интерактивной работе вывод результатов в консоли теперь использует символы псевдографики Unicode, что заметно улучшает читаемость. В пакетном режиме для обратной совместимости сохранен старый формат.
  • Команды с точкой больше не требуют обязательной точки с запятой в конце — одиночные знаки препинания игнорируются (возможная несовместимость со старыми скриптами).
  • Стабилизирована работа команд .testcase и .check: они полностью интегрированы в набор тестов SQLite.
  • Аргументы командной строки с расширениями .sql или .txt теперь автоматически интерпретируются как скрипты.
  • Команда .timer получила параметр once для разового срабатывания, а .progress обзавелась флагом --timeout S для принудительного прерывания зависших запросов.
  • Аргумент PATTERN в команде .indexes теперь корректно сопоставляется с именем индекса, а не таблицы.

Оптимизация и производительность

  • Планировщик запросов: Для EXCEPT, INTERSECT и UNION теперь всегда применяется алгоритм сортировки и слияния, так как он эффективнее хеш-таблиц.
  • Улучшена логика соединения (join) в сложных «звездообразных» схемах и оптимизировано преобразование EXISTS в JOIN.
  • Добавлена поддержка самовосстановления индексов выражений.
  • Числа с плавающей запятой: Код преобразования чисел в текст полностью переписан. Точность округления по умолчанию увеличена с 15 до 17 значащих цифр (настраивается через SQLITE_DBCONFIG_FP_DIGITS).

Другие изменения

  • В консольную утилиту sqlite3_rsync добавлена опция -p|--port.
  • Официально прекращена поддержка платформы Windows RT.
  • JavaScript/WASM: Добавлена VFS opfs-wl. Она использует Web Locks вместо стандартного протокола opfs, что обеспечивает более справедливое распределение блокировок, но требует браузеров с поддержкой Atomics.waitAsync().
Источник: https://www.linux.org.ru