4 ноября состоялся выпуск 3.51.0 компактной встраиваемой СУБД на языке C. Код SQLite распространяется как общественное достояние (public domain).
Список изменений:
-
Новые макроcы в
sqlite3.h:SQLITE_SCM_BRANCH,SQLITE_SCM_TAGS,SQLITE_SCM_DATETIME. -
Добавлены варианты функций
json_each()иjson_tree()для возврата в форматеJSONB:jsonb_each()иjsonb_tree(). -
Расширения
carrayиpercentileдобавлены в состав амальгамации. По умолчанию отключены, для их включения нужно собирать с аргументами-DSQLITE_ENABLE_CARRAYи-DSQLITE_ENABLE_PERCENTILEсоответственно. -
Обновлен программный интерфейс для языка Tcl: добавлен флаг
-asdictдля командыeval(установка данных строк в тип словаря вместо массива); а также пользовательские функции могут возвращатьSQL NULLчерез выполнениеbreak. -
Улучшен интерфейс командной строки (CLI):
-
увеличена точность команды
.timerдо микросекунд; -
добавлена поддержка символов двойной ширины в режимы форматирования
boxиcolumn; -
команда
.imposterпозволяет читать содержимое индексов как таблиц (т.н. imposter-таблицы); -
добавлен аргумент
--ifexistsдля команды.open; -
ширина колонок, задаваемых через команду
.width, ограничена до 30000 символов.
-
-
Оптимизации производительности:
-
уменьшена нагрузка на CPU для транзакций чтения;
-
раннее обнаружение
JOINс таблицами без возвращаемых строк; -
скалярные подзапросы, которые не влияют на общее выражение, будут исключены при выполнении;
-
ускорены оконные функции типа
BETWEEN :x FOLLOWING AND :y FOLLOWINGдля больших:y;
-
-
Добавлена PRAGMA-команда
wal_checkpoint=NOOP. -
Добавлен NOOP режим (через
SQLITE_CHECKPOINT_NOOP) для вызова функцииsqlite3_wal_checkpoint_v2(). -
В API добавлена новая функция
sqlite3_set_errmsg(). -
Добавлена функция
sqlite3_db_status64(), для функцийsqlite3_db_status64()иsqlite3_db_status()добавлено значение опцииSQLITE_DBSTATUS_TEMPBUF_SPILL. -
Добавлена функция
sqlite3changeset_apply_v3()в расширениеsession. -
Для SQL-функций
format()иprintf()добавлена возможность избежания отрицательных нулевых значений типа-0.0. Для этого нужно использовать флаг#и не использовать флаг+, т.е. писать конструкции типа%#f. -
Улучшено описание ошибок, возвращаемых
FTS5. -
STRICTбудет применён для вычисляемых колонок. -
Улучшена поддержка VxWorks.
-
Добавлена поддержка 64-битного WASM.
-
Улучшено сопротивление поломке файла БД в случае снятия POSIX блокировок при использовании
close().











