Опубликован релиз SQLite 3.53, легковесной СУБД, оформленной в виде подключаемой библиотеки. Выпуск 3.52 был отменён. Код SQLite распространяется как общественное достояние (public domain), т.е. может использоваться без ограничений и безвозмездно в любых целях. Финансовую поддержку разработчиков SQLite осуществляет специально созданный консорциум.
Основные изменения:
- Устранена ошибка, приводившая к повреждению БД. Проблема присутствовала начиная с версии SQLite 3.7.0 (2010 год), затрагивала БД в режиме WAL (Write-Ahead Logging) и проявлялась из-за состояния гонки при одновременном открытии двух и более соединений к БД, которые пытались записать или зафиксировать транзакции в одном экземпляре БД. Утверждается, что приводящее к сбою стечение обстоятельств проявляется крайне редко и его удалось повторить только в специально созданном тестовом сценарии.
- В команде «ALTER TABLE» разрешено удалять проверки «NOT NULL» и «CHECK».
- Добавлена команда «REINDEX EXPRESSIONS» для перестроения индексов на основе выражений, в которых в качестве элемента индекса используется функция над столбцом или операции над столбцами. Команда может применяться для восстановления протухших индексов.
- Внутри временных триггеров, создаваемых командой «CREATE TEMP TRIGGER» и применяемым к таблицам в других БД, разрешено изменение таблиц или запросы данных из таблиц.
- В команде «VACUUM INTO» при указании целевого файла через URL реализовано использование параметра «reserve=N» для определения числа создаваемых резервных копий БД.
- Реализованы новые SQL-функции json_array_insert() и jsonb_array_insert() для вставки элементов в массивы JSON.
- Добавлена и задействована в утилите командной строки библиотека QRF (Query Result Formatter) для форматирования результатов выполнения SQL-запросов в удобочитаемый вид.
- Изменения в утилите командной строки:
- Значительно расширена команда «.mode«.
- Улучшено формирование вывода, например, включена по умолчанию отрисовка рамок, а числовые значения теперь выравниваются по правую границу при табулированном выводе.
- Обеспечено игнорирование символов «;» после команд.
- Содержимое указанных в командной строке файлов с расширениями *.sql и *.txt теперь читается и интерпретируется как наборы SQL-выражений и dot-команд.
- В команду «.timer» добавлена поддержка значения «once» для применения таймера только к следующему SQL-выражению.
- В команду «.progress» добавлена опция «—timeout S» для принудительного прерывания SQL-выражения после истечения таймаута.
- В команде «.indexes» изменено поведение шаблонов, которые теперь применяются к именам индексов, а не именам проиндексированных таблиц.
- Внесены оптимизации в планировщик запросов, ускорившие работу слияния таблиц и операций ЕXCEPT, INTERSECT и UNION.
- Повышена производительность функций преобразования чисел с плавающей запятой в текстовое представление.
- В реализацию, компилируемую в промежуточный код WebAssembly, добавлена VFS «opfs-wl», идентичная VFS «opfs», но использующая API Web Locks для работы с блокировками.
- В утилиту sqlite3_rsync добавлена опция «-p|—port».
- Прекращена поддержка платформы Windows RT.
Источник: http://www.opennet.ru/opennews/art.shtml?num=65182
