Состоялся релиз легковесной СУБД 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 :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().