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

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

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

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

    СЪЗДАЙ ТАБЛИЦА t1(
    a INTEGER PRIMARY KEY,
    b INT,
    c TEXT,
    d INT ГЕНЕРИРАНА ВИНАГИ КАТО (a*abs(b)) ВИРТУАЛНА,
    e TEXT ГЕНЕРИРАНА ВИНАГИ КАТО (substr(c,b,b+1)) СЪХРАНЕНА
    );

  • Добавени 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()).

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

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster