Lansarea SGBD SQLite 3.31 cu suport pentru coloane generate

Publicat lansare SQLite 3.31.0, o bază de date ușoară, disponibilă ca bibliotecă de conectare. Codul SQLite este distribuit ca domeniu public, adică poate fi utilizat fără restricții și gratuit în orice scop. Suportul financiar pentru dezvoltatorii SQLite este asigurat de un consorțiu creat special, care include companii precum Adobe, Oracle, Mozilla, Bentley și Bloomberg.

Principalele modificări:

  • A fost adăugat suport pentru coloane generate (coloane calculate), permițând la crearea unei tabele să definești o coloană al cărei valoare este calculată automat pe baza conținutului unei alte coloane. Coloanele generate pot fi fie virtuale (formate la fiecare acces), fie stocate în baza de date (salvate la fiecare actualizare a coloanelor legate). Conținutul coloanelor generate este disponibil doar în modul de citire (modificarea se face doar prin modificarea valorii unei alte coloane utilizate în calcul). De exemplu:

    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
    );

  • Au fost adăugate PRAGMA trusted_schema, configurație SQLITE_DBCONFIG_TRUSTED_SCHEMA și opțiunea de compilare „-DSQLITE_TRUSTED_SCHEMA”, permițând gestionarea activării protecției împotriva atacurilor prin modificarea schemei de date în baza de date. Cu protecția activată, se limitează utilizarea funcțiilor SQL (neetichetate ca SQLITE_INNOCUOUS) în declanșatoare, vizualizări, expresii CHECK și DEFAULT, indecși și coloane generate. De asemenea, se dezactivează utilizarea tabelelor virtuale în declanșatoare și vizualizări, dacă tabela virtuală nu este explicit declarată cu marcajul SQLITE_VTAB_INNOCUOUS.
  • S-a implementat capacitatea de a atribui anumitor funcții SQL în aplicații proprietăți SQLITE_INNOCUOUS (funcții inofensive care nu depind de parametrii externi și nu pot fi utilizate pentru acțiuni malițioase) și SQLITE_DIRECTONLY (numai apel direct în cererile SQL, fără posibilitatea de a aplica în declanșatoare, vizualizări și schemele de structură a datelor);
  • Modul adăugat uuid cu implementarea funcțiilor pentru gestionarea UUID (RFC-4122);
  • A fost adăugată PRAGMA hard_heap_limit și funcția sqlite3_hard_heap_limit64() pentru gestionarea dimensiunii maxime a heap-ului;
  • În PRAGMA function_list s-a adăugat output-ul tipului, proprietăților și numărului de argumente ale fiecărei funcții;
  • În tabela virtuală DBSTAT adăugat modul de agregare a datelor;
  • În sqlite3_open_v2() s-a implementat opțiunea SQLITE_OPEN_NOFOLLOW, permițând interzicerea deschiderii legăturilor simbolice;
  • Pentru argumentul PATH, transmis în funcțiile JSON, a fost adăugată suportul pentru notația de array „#-N”;
  • În sistemul de distribuție a memoriei lookaside s-a implementat suportul pentru două grupuri separate de memorie, fiecare dintre ele putând fi utilizat pentru alocarea de blocuri de dimensiuni diferite (această separare permite extinderea utilizării sistemului lookaside, în timp ce reduce dimensiunea buffer-ului alocat pentru fiecare conexiune de la 120 la 48 KB);
  • Suportul pentru PRAGMA a fost oprit legacy_file_format, care era incompatibil cu VACUUM, coloanele generate și indicii descrescători (suportul pentru formatul moștenit poate fi restabilit prin flag-ul SQLITE_DBCONFIG_LEGACY_FILE_FORMAT în sqlite3_db_config()).

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster