Состоялся релиз легковесной СУБД 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; улучшено сопротивление поломки файла БД в случае снятия POSIX блокировок при использовании close(). Теги: Source: https://habr.com/ru/news/963566/