Выпуск СУБД SQLite 3.51

Опубликован релиз SQLite 3.51, легковесной СУБД, оформленной в виде подключаемой библиотеки. Код SQLite распространяется как общественное достояние (public domain), т.е. может использоваться без ограничений и безвозмездно в любых целях. Финансовую поддержку разработчиков SQLite осуществляет специально созданный консорциум.

Основные изменения:

  • Добавлены новые JSON-функции jsonb_each() и jsonb_tree(), которые отличаются от ранее доступных функций json_each() и json_tree() тем, что возвращают значение JSONB для данных с типом массив или объект.
  • Код расширений carray и percentile перенесён в базовый файл «sqlite3.c» со встраиваемым кодом SQLite. По умолчанию данные дополнения отключены и требуют указания при сборке параметров «-DSQLITE_ENABLE_CARRAY» и «-DSQLITE_ENABLE_PERCENTILE».
  • Улучшен интерфейс для использования SQLite в скриптах на языке Tcl. В команду «eval» добавлен флаг «-asdict» для выставления строк с использованием типа «dict» вместо «array». Добавлена возможность прерывания пользовательских функций для возвращения значения NULL.
  • Изменения в интерфейсе командной строки:
    • Точность команды «.timer» увеличена до микросекунд;
    • В режимах форматирования «box» и «column» реализована поддержка символов с двойной шириной;
    • Команда «.imposter» теперь может предоставлять в режиме только для чтения imposter-таблицы (позволяют получить доступ к данным в индексе как к таблице), работающие с операцией VACUUM и не требующие запуска с флагом «—unsafe-testing»;
    • В утилиту sqlite и команду «.open» добавлена опция «—ifexists».
    • Максимальная ширина строки, выставляемая при помощи команды «.width», ограничена 30000 символов.
  • Внесены оптимизации производительности:
    • Сокращена нагрузка на CPU при фиксации транзакций, ограниченных доступом на чтение;
    • Улучшено определение операций слияния (JOIN), не возвращающих строки из-за того что одна или несколько таблиц не содержит строк;
    • Исключено выполнение скалярных подзапросов, не влияющих на результат;
    • Ускорена работа оконных функций в запросах с выражением «BETWEEN 😡 FOLLOWING AND :y FOLLOWING» и очень большом значении «:y».
  • Добавлена прагма «PRAGMA wal_checkpoint=NOOP» и функция API sqlite3_wal_checkpoint() для фиксации изменений в WAL-логе
  • В API добавлены функции sqlite3_set_errmsg() и sqlite3_db_status64().
  • В JavaScript/WASM-версии SQLite реализована поддержка сборки в представление WebAssembly с 64-разрядными указателями.
  • Повышена стойкость от повреждения БД в приложениях, снимающих POSIX-блокировки через вызов close().
  • Улучшена поддержка платформы VxWorks.

Источник: http://www.opennet.ru/opennews/art.shtml?num=64186