Түзүлгөн мамычаларды колдоо менен DBMS SQLite 3.31 чыгаруу

жарыяланган бошотуу SQLite 3.31.0, плагин китепканасы катары иштелип чыккан жеңил DBMS. SQLite коду коомдук домен катары таратылат, б.а. кандайдыр бир максатта чектөөсүз жана акысыз колдонулушу мүмкүн. SQLite иштеп чыгуучуларына каржылык колдоо Adobe, Oracle, Mozilla, Bentley жана Bloomberg сыяктуу компанияларды камтыган атайын түзүлгөн консорциум тарабынан көрсөтүлөт.

негизги өзгөрүүлөр:

  • Кошулган колдоо генерируемых столбцов (вычисляемых столбцов), позволяющих при создании таблицы определить столбец, значение которого автоматически вычисляется на основе содержимого другого столбца. Генерируемые столбцы могут быть как виртуальными (формируемыми на лету при каждом обращении), так и сохраняемыми в БД (сохраняются при каждом обновлении связанных столбцов). Содержимое генерируемых столбцов доступно только в режиме чтения (изменение производится только через модификацию значения в другом столбце, задействованном при вычислении). Например:

    CREATE TABLE t1(
    a INTEGER PRIMARY KEY,
    b INT,
    c TEXT,
    d INT GENERATED ALWAYS AS (a*abs(b)) VIRTUAL,
    e TEXT GENERATED ALWAYS AS (substr(c,b,b+1)) STORED
    );

  • Добавлены PRAGMA trusted_schema, настройка SQLITE_DBCONFIG_TRUSTED_SCHEMA и сборочная опция «-DSQLITE_TRUSTED_SCHEMA», позволяющие управлять включением защиты от кол салуулар через модификацию схемы данных в БД. При активной защите ограничивается использование SQL-функций (не помеченных как SQLITE_INNOCUOUS) в триггерах, представлениях, выражениях CHECK и DEFAULT, индексах и генерируемых столбцах. Также отключается использование виртуальных таблиц в триггерах и представлениях, если виртуальная таблица явно не объявлена с флагом SQLITE_VTAB_INNOCUOUS.
  • Реализована возможность присвоения определённым в приложениях SQL-функциям свойств SQLITE_INNOCUOUS (безобидные функции, которые не зависят от внешних параметров и не могут использоваться для совершения вредоносных действий) и SQLITE_DIRECTONLY (только прямой вызов в SQL-запросах, без возможности применения в триггерах, представлениях и схемах структуры данных);
  • Добавлен модуль uuid с реализацией функций для обработки UUID ( RFC-4122);
  • Добавлена PRAGMA hard_heap_limit жана функциясы sqlite3_hard_heap_limit64() для управления максимальным размером кучи;
  • В PRAGMA function_list добавлен вывод типа, свойств и числа аргументов каждой функции;
  • В виртуальную таблицу DBSTAT кошулду режим агрегирования данных;
  • В sqlite3_open_v2() реализована опция SQLITE_OPEN_NOFOLLOW, позволяющая запретить открытие символических ссылок;
  • Для аргумента PATH, передаваемого в JSON-функции, добавлена поддержка нотации массивов «#-N»;
  • В системе распределения памяти lookaside реализована поддержка двух отдельных пулов памяти, каждый из которых может использоваться для выделения блоков разного размера (разделение позволяет расширить применение системы lookaside, при этом снизив размер выделяемого на каждое соединение буфера со 120 до 48 КБ);
  • Прекращена поддержка PRAGMA legacy_file_format, которая была несовместима с VACUUM, генерируемыми столбцами и убывающими индексами (поддержку устаревшего формата можно вернуть через флаг SQLITE_DBCONFIG_LEGACY_FILE_FORMAT в sqlite3_db_config()).

Source: opennet.ru

Комментарий кошуу