DBMS SQLite 3.31 izlaišana ar atbalstu ģenerētajām kolonnām

publicēts atbrīvot SQLite 3.31.0, viegla DBVS, kas izveidota kā spraudņu bibliotēka. SQLite kods tiek izplatīts kā publisks domēns, t.i. var izmantot bez ierobežojumiem un bez maksas jebkuram mērķim. Finansiālu atbalstu SQLite izstrādātājiem nodrošina īpaši izveidots konsorcijs, kurā ietilpst tādi uzņēmumi kā Adobe, Oracle, Mozilla, Bentley un Bloomberg.

Galvenais izmaiņas:

  • Pievienots atbalsts ģenerētās kolonnas (aprēķinātās kolonnas), kas ļauj definēt kolonnu, kad veidojat tabulu, kuras vērtība tiek automātiski aprēķināta, pamatojoties uz citas kolonnas saturu. Ģenerētās kolonnas var būt virtuālas (ģenerētas lidojuma laikā ar katru piekļuvi) vai saglabātas datu bāzē (saglabātas katru reizi, kad saistītās kolonnas tiek atjauninātas). Ģenerēto kolonnu saturs ir pieejams tikai lasīšanas režīmā (izmaiņas tiek veiktas, tikai mainot vērtību citā aprēķinā iesaistītajā kolonnā). Piemēram:

    IZVEIDOT TABULU t1(
    VESELS SKAITS PRIMĀRĀ ATSLĒGA,
    b INT,
    c TEKSTS,
    d INT ĢENERĒTS VIENMĒR KĀ (a*abs(b)) VIRTUĀLS,
    e TEKSTS ĢENERĒTS VIENMĒR KĀ (substr(c,b,b+1)) SAGLABĀTS
    );

  • Pievienota PRAGMA uzticama_shēma, iestatījums SQLITE_DBCONFIG_TRUSTED_SCHEMA un montāžas opciju “-DSQLITE_TRUSTED_SCHEMA”, kas ļauj kontrolēt iekļaušanu aizsardzības pret uzbrukumiem mainot datu shēmu datu bāzē. Aktīvā aizsardzība ierobežo SQL funkciju (nav atzīmēta ar SQLITE_INNOCUOUS) izmantošanu trigeros, skatos, CHECK un DEFAULT priekšrakstos, indeksos un ģenerētajās kolonnās. Arī virtuālo tabulu izmantošana trigeros un skatos ir atspējota, ja vien virtuālā tabula nav skaidri deklarēta ar karogu SQLITE_VTAB_INNOCUOUS.
  • Ieviesta iespēja piešķirt rekvizītus lietojumprogrammās definētajām SQL funkcijām SQLITE_INNOCUOUS (nekaitīgas funkcijas, kas nav atkarīgas no ārējiem parametriem un kuras nevar izmantot ļaunprātīgu darbību veikšanai) un SQLITE_DIRECTONLY (tikai tiešais izsaukums SQL vaicājumos, bez iespējas izmantot trigeros, skatos un datu struktūras diagrammās);
  • Pievienots modulis uuid ar UUID apstrādes funkciju ieviešanu (RFC-4122);
  • Pievienota PRAGMA hard_heap_limit un funkciju sqlite3_hard_heap_limit64() kontrolēt maksimālo kaudzes izmēru;
  • PRAGMĀ funkciju_saraksts pievienota katras funkcijas veida, īpašību un argumentu skaita izvade;
  • Uz virtuālo tabulu DBSTAT piebilda datu apkopošanas režīms;
  • sqlite3_open_v2() ievieš opciju SQLITE_OPEN_NOFOLLOW, kas ļauj atspējot simbolisko saišu atvēršanu;
  • Par argumentu CEĻŠ, nodots JSON funkcijām, pievienots atbalsts “#-N” masīva apzīmējumam;
  • Atmiņas sadales sistēmā malā ir ieviests atbalsts diviem atsevišķiem atmiņas baseiniem, no kuriem katrs var piešķirt dažāda lieluma blokus (atdalīšana ļauj paplašināt lookaside sistēmas izmantošanu, vienlaikus samazinot katram savienojumam piešķirtā bufera lielumu no 120 uz 48 KB);
  • PRAGMA atbalsts ir pārtraukts legacy_file_format, kas nebija saderīga ar VACUUM, ģenerētajām kolonnām un dilstošiem indeksiem (mantotā formāta atbalstu var atgriezt, izmantojot SQLITE_DBCONFIG_LEGACY_FILE_FORMAT karodziņu sqlite3_db_config()).

Avots: opennet.ru

Pievieno komentāru