Издаване на СУБД SQLite 3.31 с поддръжка за генерирани колони

публикувани освобождаване SQLite 3.31.0, лека СУБД, проектирана като библиотека с добавки. Кодът на SQLite се разпространява като обществено достояние, т.е. може да се използва без ограничения и безплатно за всякакви цели. Финансовата подкрепа за разработчиците на SQLite се осигурява от специално създаден консорциум, който включва компании като Adobe, Oracle, Mozilla, Bentley и Bloomberg.

Основната промени:

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

    СЪЗДАВАНЕ НА ТАБЛИЦА t1(
    ЦЯЛ ПЪРВИЧЕН КЛЮЧ,
    b INT,
    c ТЕКСТ,
    d INT ГЕНЕРИРАН ВИНАГИ КАТО (a*abs(b)) ВИРТУАЛЕН,
    e ТЕКСТ, ГЕНЕРИРАН ВИНАГИ КАТО (substr(c,b,b+1)) СЪХРАНЕН
    );

  • Добавена PRAGMA доверена_схема, настройка 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() за контролиране на максималния размер на купчината;
  • В ПРАГМА списък_функции добавен изход за тип, свойства и брой аргументи на всяка функция;
  • Към виртуална таблица DBSTAT добавено режим на агрегиране на данни;
  • sqlite3_open_v2() реализира опцията SQLITE_OPEN_NOFOLLOW, която ви позволява да забраните отварянето на символни връзки;
  • За аргумент PATH, предадени на JSON функции, добавена поддръжка за нотация на масива „#-N“;
  • В системата за разпределение на паметта поглед отстрани въведена е поддръжка за два отделни пула памет, всеки от които може да се използва за разпределяне на блокове с различни размери (разделянето ви позволява да разширите използването на системата lookaside, като същевременно намалявате размера на буфера, разпределен за всяка връзка от 120 на 48 KB);
  • Поддръжката на PRAGMA е преустановена наследен_файлов формат, което беше несъвместимо с VACUUM, генерирани колони и низходящи индекси (поддръжката на стар формат може да бъде върната чрез флага SQLITE_DBCONFIG_LEGACY_FILE_FORMAT в sqlite3_db_config()).

Източник: opennet.ru

Добавяне на нов коментар