Рэліз СКБД SQLite 3.31 з падтрымкай генераваных слупкоў

Апублікаваны рэліз SQLite 3.31.0, легкаважнай СКБД, аформленай у выглядзе бібліятэкі, якая падключаецца. Код SQLite распаўсюджваецца як грамадскі здабытак (public domain), г.зн. можа выкарыстоўвацца без абмежаванняў і бязвыплатна ў любых мэтах. Фінансавую падтрымку распрацоўшчыкаў 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, якая дазваляе забараніць адкрыццё сімвалічных спасылак;
  • Для аргумента ШЛЯХ, які перадаецца ў JSON-функцыі, дададзеная падтрымка натацыі масіваў «#-N»;
  • У сістэме размеркавання памяці lookaside рэалізаваная падтрымка двух асобных пулаў памяці, кожны з якіх можа выкарыстоўвацца для вылучэння блокаў рознага памеру (падзел дазваляе пашырыць ужыванне сістэмы lookaside, пры гэтым знізіўшы памер які выдаткоўваецца на кожнае злучэнне буфера са 120 да 48 КБ);
  • Спынена падтрымка PRAGMA legacy_file_format, якая была несумяшчальная з VACUUM, якія генерыруюцца слупкамі і змяншальнымі азначнікамі (падтрымку састарэлага фармату можна вярнуць праз сцяг SQLITE_DBCONFIG_LEGACY_FILE_FORMAT у sqlite3_db_config()).

Крыніца: opennet.ru

Дадаць каментар