Išleista DBMS SQLite 3.31 su generuojamų stulpelių palaikymu

paskelbta paleisti 3.31.0 „SQLite“, lengva DBVS, sukurta kaip papildinių biblioteka. SQLite kodas platinamas kaip viešasis domenas, t.y. gali būti naudojamas be apribojimų ir nemokamai bet kokiam tikslui. Finansinę paramą SQLite kūrėjams teikia specialiai sukurtas konsorciumas, į kurį įeina tokios kompanijos kaip Adobe, Oracle, Mozilla, Bentley ir Bloomberg.

pagrindinis pokyčiai:

  • Pridėta parama sugeneruotų stulpelių (skaičiuojami stulpeliai), leidžiantys apibrėžti stulpelį, kai kuriate lentelę, kurios vertė automatiškai apskaičiuojama pagal kito stulpelio turinį. Sugeneruoti stulpeliai gali būti virtualūs (sugeneruojami iš karto su kiekviena prieiga) arba saugomi duomenų bazėje (išsaugomi kiekvieną kartą, kai atnaujinami susiję stulpeliai). Sugeneruotų stulpelių turinys pasiekiamas tik skaitymo režimu (pakeitimai atliekami tik pakeitus reikšmę kitame stulpelyje, įtrauktame į skaičiavimą). Pavyzdžiui:

    KURTI LENTELĘ t1(
    SVEIKI SKAIČIŲ PIRMINIS RAKTAS,
    b INT,
    c TEKSTAS,
    d INT GENERUOTA VISADA KAIP (a*abs(b)) VIRTUALUS,
    e TEKSTAS GENERAMAS VISADA KAIP (substr(c,b,b+1)) IŠSAUGOMAS
    );

  • Pridėta PRAGMA patikima_schema, nustatymas SQLITE_DBCONFIG_TRUSTED_SCHEMA ir surinkimo parinktis „-DSQLITE_TRUSTED_SCHEMA“, kuri leidžia valdyti apsaugos nuo išpuolių keičiant duomenų schemą duomenų bazėje. Aktyvi apsauga riboja SQL funkcijų (nepažymėtų SQLITE_INNOCUOUS) naudojimą trigeriuose, rodiniuose, CHECK ir DEFAULT sakiniuose, indeksuose ir sugeneruotuose stulpeliuose. Virtualiųjų lentelių naudojimas trigeriuose ir rodiniuose taip pat išjungtas, nebent virtualioji lentelė yra aiškiai deklaruota su SQLITE_VTAB_INNOCUOUS vėliava.
  • Įdiegta galimybė programose apibrėžtoms SQL funkcijoms priskirti ypatybes SQLITE_INNOCUOUS (nekenksmingos funkcijos, kurios nepriklauso nuo išorinių parametrų ir negali būti naudojamos piktybiniams veiksmams atlikti) ir SQLITE_DIRECTONLY (tik tiesioginis iškvietimas SQL užklausose, be galimybės naudoti trigeriuose, rodiniuose ir duomenų struktūros diagramose);
  • Pridėtas modulis uuid su UUID apdorojimo funkcijų įgyvendinimu (RFC-4122);
  • Pridėta PRAGMA hard_heap_limit ir funkcija sqlite3_hard_heap_limit64() kontroliuoti didžiausią krūvos dydį;
  • Pragmoje funkcijų_sąrašas pridėta kiekvienos funkcijos tipo, savybių ir argumentų skaičiaus išvestis;
  • Į virtualią lentelę DBSTAT pridėta duomenų agregavimo režimas;
  • sqlite3_open_v2() įgyvendina SQLITE_OPEN_NOFOLLOW parinktį, kuri leidžia išjungti simbolinių nuorodų atidarymą;
  • Už argumentą KELIAS, perduotas JSON funkcijoms, pridėtas „#-N“ masyvo žymėjimo palaikymas;
  • Atminties paskirstymo sistemoje į šoną įdiegtas dviejų atskirų atminties telkinių palaikymas, kurių kiekvienas gali būti naudojamas skirtingo dydžio blokams paskirstyti (atskyrimas leidžia išplėsti „lookaside“ sistemos naudojimą, kartu sumažinant kiekvienam ryšiui skiriamo buferio dydį nuo 120 iki 48 KB);
  • PRAGMA palaikymas buvo nutrauktas legacy_file_format, kuris buvo nesuderinamas su VACUUM, sugeneruotais stulpeliais ir mažėjančiais indeksais (senesnio formato palaikymą galima grąžinti naudojant SQLITE_DBCONFIG_LEGACY_FILE_FORMAT vėliavėlę sqlite3_db_config()).

Šaltinis: opennet.ru

Добавить комментарий