Состоялся релиз легковесной СУБД SQLite 3.51, оформленной в виде подключаемой библиотеки. Исходный код проекта SQLite написан на C, распространяется как общественное достояние (public domain) и может использоваться без ограничений и безвозмездно в любых целях.
Финансовую поддержку команды разработчиков SQLite осуществляет специально созданный консорциум.
Основные изменения и доработки в SQLite 3.51:
новые макро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 Tables);
добавлен аргумент —ifexists для команды .open;
ширина колонок, задаваемых через команду .width, ограничена до 30 000 символов.
сделана оптимизация производительности:
уменьшена нагрузка на CPU для транзакций чтения;
раннее обнаружение JOIN с таблицами без возвращаемых строк;
скалярные подзапросы, которые не влияют на общее выражение, будут исключены при выполнении;
ускорены оконные функции типа BETWEEN 😡 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().
:
Источник: habr.com