Lansarea DBMS SQLite 3.31 cu suport pentru coloanele generate

publicat eliberare SQLite 3.31.0, un SGBD ușor conceput ca o bibliotecă de plug-in. Codul SQLite este distribuit ca domeniu public, de exemplu. poate fi folosit fără restricții și gratuit pentru orice scop. Sprijinul financiar pentru dezvoltatorii SQLite este oferit de un consorțiu special creat, care include companii precum Adobe, Oracle, Mozilla, Bentley și Bloomberg.

Principalul modificări:

  • Sprijin adăugat coloane generate (coloane calculate), care vă permit să definiți o coloană atunci când creați un tabel a cărui valoare este calculată automat pe baza conținutului altei coloane. Coloanele generate pot fi fie virtuale (generate din mers cu fiecare acces), fie stocate în baza de date (salvate de fiecare dată când coloanele aferente sunt actualizate). Conținutul coloanelor generate este disponibil doar în modul citire (modificările se fac doar prin modificarea valorii într-o altă coloană implicată în calcul). De exemplu:

    CREAȚI TABEL t1(
    o CHEIE PRIMARĂ INTEGER,
    b INT,
    c TEXT,
    d INT GENERAT ÎNTOTDEAUNA CA (a*abs(b)) VIRTUAL,
    e TEXT GENERAT ÎNTOTDEAUNA CA (substr(c,b,b+1)) STOCAT
    );

  • S-a adăugat PRAGMA schemă_de_încredere, setare SQLITE_DBCONFIG_TRUSTED_SCHEMA și opțiunea de asamblare „-DSQLITE_TRUSTED_SCHEMA”, care vă permit să controlați includerea protecției împotriva atac prin modificarea schemei de date din baza de date. Protecția activă restricționează utilizarea funcțiilor SQL (nemarcate SQLITE_INNOCUOUS) în declanșatoare, vizualizări, instrucțiuni CHECK și DEFAULT, indexuri și coloane generate. Utilizarea tabelelor virtuale în declanșatoare și vizualizări este, de asemenea, dezactivată, cu excepția cazului în care tabela virtuală este declarată în mod explicit cu indicatorul SQLITE_VTAB_INNOCUOUS.
  • S-a implementat capacitatea de a atribui proprietăți funcțiilor SQL definite în aplicații SQLITE_INNOCUOUS (funcții inofensive care nu depind de parametri externi și nu pot fi folosite pentru a efectua acțiuni răuvoitoare) și SQLITE_DIRECTONLY (doar apel direct în interogări SQL, fără posibilitatea utilizării în declanșatori, vizualizări și diagrame de structură a datelor);
  • Modul adăugat uuid cu implementarea funcțiilor de procesare UUID (RFC-4122);
  • S-a adăugat PRAGMA hard_heap_limit și funcție sqlite3_hard_heap_limit64() pentru a controla dimensiunea maximă a heap-ului;
  • În PRAGMA listă_funcții ieșire adăugată a tipului, proprietăților și numărului de argumente ale fiecărei funcție;
  • La tabelul virtual DBSTAT adăugat modul de agregare a datelor;
  • sqlite3_open_v2() implementează opțiunea SQLITE_OPEN_NOFOLLOW, care vă permite să dezactivați deschiderea legăturilor simbolice;
  • Pentru argumentare PATH, trecut la funcțiile JSON, a adăugat suport pentru notația matrice „#-N”;
  • În sistemul de distribuție a memoriei uita-te deoparte a fost implementat suport pentru două pool-uri de memorie separate, fiecare dintre acestea putând fi utilizat pentru a aloca blocuri de dimensiuni diferite (separarea vă permite să extindeți utilizarea sistemului Lookaside, reducând în același timp dimensiunea buffer-ului alocat fiecărei conexiuni de la 120 la 48). KB);
  • Sprijinul PRAGMA a fost întrerupt legacy_file_format, care era incompatibil cu VACUUM, coloanele generate și indecșii descendenți (suportul pentru format vechi poate fi returnat prin indicatorul SQLITE_DBCONFIG_LEGACY_FILE_FORMAT în sqlite3_db_config()).

Sursa: opennet.ru

Adauga un comentariu