
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






