- Вышла новая версия легковесной СУБД SQLite 3.51 с обновлённым функционалом и улучшениями производительности.
- Добавлены новые макросы, расширены возможности работы с JSON, улучшен интерфейс командной строки и программный интерфейс Tcl.
- Произведена оптимизация работы с транзакциями, добавлены новые функции API и улучшена поддержка различных платформ, включая 64-битный WASM.
SQLite, популярная встраиваемая реляционная СУБД, выпустила релиз версии 3.51, который включает комплекс значительных улучшений и новых возможностей. Исходный код SQLite остаётся полностью открытым и доступным в публичном достоянии, что позволяет свободно использовать её в любых проектах без ограничений.
В новой версии добавлены макросы SQLITE_SCM_BRANCH, SQLITE_SCM_TAGS и SQLITE_SCM_DATETIME, а также расширены функции для работы с JSON — теперь доступны jsonb_each() и jsonb_tree(), возвращающие данные в формате JSONB. Расширения carray и percentile стали частью амальгамированной сборки, но требуют явного включения через соответствующие параметры компиляции.
Интерфейс для языка Tcl получил дополнительные возможности: появилась опция -asdict для команды eval, позволяющая возвращать данные в формате словаря, а также возможность возвращать SQL NULL из пользовательских функций при помощи break. Улучшения коснулись и командной строки: точность встроенной команды .timer увеличена до микросекунд, добавлена поддержка символов двойной ширины в режимах форматирования box и column, появилась команда .imposter для чтения индексов как таблиц, введён аргумент —ifexists для .open, а ограничение на ширину колонок .width увеличено до 30000 символов.
Важной частью обновления стала оптимизация производительности. Было снижено потребление CPU при транзакциях чтения, улучшено раннее обнаружение JOIN с таблицами без возвращаемых строк, исключены ненужные скалярные подзапросы и ускорены оконные функции для больших интервалов. Кроме того, введена новая PRAGMA-команда wal_checkpoint=NOOP и соответствующий NOOP режим вызова функции sqlite3_wal_checkpoint_v2().
API базы дополнен функцией sqlite3_set_errmsg(), а также добавлена функция sqlite3_db_status64() с опцией SQLITE_DBSTATUS_TEMPBUF_SPILL. Расширение session получило функцию sqlite3changeset_apply_v3(). Для SQL-функций форматирования数format() и printf() реализована возможность избежать отрицательных нулевых значений (-0.0), что достигается специальным использованием флагов форматирования.
Также улучшено описание ошибок для FTS5, внедрена строгая проверка для вычисляемых колонок, повышена стабильность работы на платформе VxWorks и добавлена поддержка 64-битных WebAssembly (WASM). Наконец, усилено сопротивление повреждению файла базы данных при снятии POSIX блокировок и закрытии соединения.
Релиз SQLite 3.51 подтверждает стремление команды разработчиков обеспечивать лёгкую, мощную и универсальную систему управления базами данных, адаптированную под широкие сценарии использования и современные требования к производительности и надёжности.
