A fost publicată versiunea SQLite 3.40, o bază de date ușoară, disponibilă ca bibliotecă conectabilă. Codul SQLite este distribuit ca domeniu public, adică poate fi utilizat fără restricții și gratuit în orice scop. Sprijinul financiar pentru dezvoltatorii SQLite este asigurat de un consorțiu creat special, care include companii precum Adobe, Oracle, Mozilla, Bentley și Bloomberg.
Modificări principale:
- A fost implementată o funcționalitate experimentală de compilare a SQLite în cod intermediar WebAssembly, care poate fi rulat în browser și este potrivit pentru a gestiona baze de date din aplicații web scrise în JavaScript. Dezvoltatorii web primesc o interfață orientată pe obiect de nivel înalt pentru lucrul cu datele în stilul sql.js sau Node.js, o înfășurare asupra API-ului C de nivel inferior și un API bazat pe mecanismul Web Worker, care permite crearea de handleri asincroni rulați în fire separate. Datele pe care aplicațiile web le salvează în versiunea WASM a SQLite pot fi salvate pe partea clientului folosind OPFS (Origin-Private FileSystem) sau API window.localStorage.
- A fost adăugat un extensor de recuperare, destinat recuperării datelor din fișierele bazei de date corupte. În interfața cu linia de comandă, pentru recuperare se folosește comanda „.recover”.
- S-au îmbunătățit funcționalitățile planificatorului de interogări. Au fost eliminate restricțiile la utilizarea indicilor cu tabele care au mai mult de 63 de coloane (anterior, în cadrul operațiunilor cu coloane, numărul secvențial cărora depășea 63, indexarea nu era aplicată). Indexarea valorilor utilizate în expresii a fost îmbunătățită. S-a oprit încărcarea de pe disc a șirurilor mari și a blob-urilor în timpul procesării operatorilor NOT NULL și IS NULL. A fost exclusă materializarea vederilor pentru care scansarea completă se efectuează o singură dată.
- În baza de cod, tipul „char *” pentru reprezentarea numelui fișierelor a fost înlocuit cu un tip separat sqlite3_filename.
- A fost adăugată o funcție internă sqlite3_value_encoding().
- A fost adăugat modul SQLITE_DBCONFIG_DEFENSIVE, care interzice modificarea versiunii schemei de stocare a datelor.
- În implementarea parametrului „PRAGMA integrity_check” au fost adăugate verificări suplimentare. De exemplu, tabelele fără marcajul STRICT nu ar trebui să conțină valori numerice în coloanele de tip TEXT și valori de tip șir în coloanele de tip NUMERIC. De asemenea, a fost adăugată o verificare a corectitudinii ordinii rândurilor în tabelele cu marcajul „WITHOUT ROWID”.
- În expresia „VACUUM INTO” au fost luate în considerare setările „PRAGMA synchronous”.
- A fost adăugată opțiunea de compilare SQLITE_MAX_ALLOCATION_SIZE, care permite limitarea dimensiunii blocurilor în timpul alocării memoriei.
- Algoritmul încorporat în SQLite pentru generarea numerelor pseudo-random a fost schimbat de la utilizarea cifrului de flux RC4 la Chacha20.
- A fost permisă utilizarea în diferite scheme de date a indicilor cu nume identice.
- Au fost efectuate optimizări de performanță, reducând încărcarea CPU cu aproximativ 1% în condiții de activitate tipică.
Sursa: opennet.ro
