Издање ДБМС СКЛите 3.31 са подршком за генерисане колоне

објављено издање СКЛите 3.31.0, лагани ДБМС дизајниран као библиотека додатака. СКЛите код се дистрибуира као јавни домен, тј. може се користити без ограничења и бесплатно у било коју сврху. Финансијску подршку програмерима СКЛите-а пружа посебно креиран конзорцијум, који укључује компаније као што су Адобе, Орацле, Мозилла, Бентлеи и Блоомберг.

Главни Промене:

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

    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 ( RFC-4122);
  • Добавлена PRAGMA hard_heap_limit и функцију sqlite3_hard_heap_limit64() для управления максимальным размером кучи;
  • В PRAGMA function_list добавлен вывод типа, свойств и числа аргументов каждой функции;
  • В виртуальную таблицу DBSTAT додато режим агрегирования данных;
  • В sqlite3_open_v2() реализована опция SQLITE_OPEN_NOFOLLOW, позволяющая запретить открытие символических ссылок;
  • Для аргумента СТАЗА, передаваемого в JSON-функции, добавлена поддержка нотации массивов «#-N»;
  • В системе распределения памяти lookaside реализована поддержка двух отдельных пулов памяти, каждый из которых может использоваться для выделения блоков разного размера (разделение позволяет расширить применение системы lookaside, при этом снизив размер выделяемого на каждое соединение буфера со 120 до 48 КБ);
  • Прекращена поддержка PRAGMA legacy_file_format, которая была несовместима с VACUUM, генерируемыми столбцами и убывающими индексами (поддержку устаревшего формата можно вернуть через флаг SQLITE_DBCONFIG_LEGACY_FILE_FORMAT в sqlite3_db_config()).

Извор: опеннет.ру

Додај коментар