Опубликован релиз 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
