Логотип

SQLite 3.53: исправлена ошибка, приводившая к повреждению WAL, добавлены новые возможности SQL

SQLite 3.53: исправлена ошибка, приводившая к повреждению WAL, добавлены новые возможности SQL

Вышла новая версия SQLite 3.53, в которой устранена ошибка, приводившая к повреждению базы данных при сбросе WAL, а также представлен широкий спектр обновлений для SQL, интерфейса командной строки, планировщика запросов и компонентов API.

Ключевым нововведением стал модуль форматирования результатов запросов, который теперь используется для форматирования результатов в интерфейсе командной строки. В примечаниях к выпуску говорится, что это расширяет возможности отображения, по умолчанию выравнивает числовые значения по правому краю в табличном выводе и меняет интерактивный вывод в интерфейсе командной строки на таблицы в формате Unicode для лучшей читаемости. В пакетном режиме для совместимости сохраняется устаревший формат вывода.

В SQLite 3.53 также расширена поддержка языка SQL. Теперь с помощью команды ALTER TABLE можно добавлять или удалять ограничения NOT NULL и CHECK. Новая команда REINDEX EXPRESSIONS позволяет перестраивать индексы выражений. В телах триггеров TEMP теперь можно запрашивать или изменять таблицы в основной схеме, а команда VACUUM INTO поддерживает установку размера резерва с помощью параметра URI filename. Также добавлены две новые функции SQL: json_array_insert() и jsonb_array_insert().

Для пользователей интерфейса командной строки команда .mode была значительно улучшена. Теперь игнорируются пустые точки с запятой в конце команд с точкой в конце. Устранены проблемы с .testcase и .check . Непустые .sql или .txt файлы, указанные в командной строке, теперь интерпретируются как SQL-скрипты или скрипты с командами в конце.

Читать  Как установить Apache Cassandra в Ubuntu 20.04

Среди дополнительных функций — однократный режим для .timer, новая опция тайм-аута для .progress и обновление .indexes таким образом, чтобы его шаблон соответствовал именам индексов, а не таблиц. Кроме того, была переработана функция преобразования чисел с плавающей запятой в текст для повышения производительности: теперь по умолчанию округляется до 17 значащих цифр, а не до 15.

Планировщик запросов также получил несколько обновлений. Теперь SQLite последовательно использует сортировку и слияние для операций EXCEPT, INTERSECT и UNION, поскольку этот подход в целом быстрее, чем обработка с использованием хэш-таблиц. В новой версии также улучшен выбор порядка объединения для больших объединений по схеме «звезда», расширена оптимизация EXISTS-to-JOIN, улучшена обработка исключений при объединении и расширены возможности оптимизации с использованием одного индекса в некоторых сценариях GROUP BY и ORDER BY.

Наконец, стоит отметить, что заметным нововведением стала функция самовосстановления индекса, которая решает проблему устаревших индексов выражений. Кроме того, в SQLite появилась команда REINDEX EXPRESSIONS для непосредственного перестроения индексов выражений по мере необходимости.

Подробнее см. в журнале изменений.

 

Выводы

Обновление SQLite 3.53 — это в первую очередь релиз, ориентированный на стабильность и безопасность данных. Главным событием стало устранение редкой, но потенциально критической ошибки в механизме WAL (Write-Ahead Logging), которая могла приводить к повреждению базы данных при определённых условиях.

Читать  Функция LEAD в MySQL

Хотя вероятность проявления бага была крайне низкой и требовала специфического совпадения обстоятельств, сам факт его существования на протяжении многих лет делает исправление особенно значимым для всех систем, где SQLite используется в продакшене.

Помимо исправлений, версия 3.53 продолжает развитие функциональности:

  • расширяются SQL-возможности;
  • улучшается обработка запросов и оптимизация;
  • повышается общая надёжность работы с транзакциями и структурой данных.

 

SQLite остаётся одной из самых стабильных и надёжных встраиваемых СУБД, а такие обновления подтверждают активную работу над качеством даже в зрелом продукте. Обновление до новой версии рекомендуется всем пользователям, особенно тем, кто использует WAL-режим или работает с критичными данными.

Редактор: AndreyEx

Рейтинг: 5 (1 голос)
Если статья понравилась, то поделитесь ей в социальных сетях:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

7 + семнадцать =

Это может быть вам интересно


Спасибо!

Теперь редакторы в курсе.

Прокрутить страницу до начала