A fost publicat versiunea SQLite 3.45, un SGBD ușor, prezentat ca o bibliotecă de conectare. Codul SQLite este distribuit ca domeniu public, adică poate fi folosit fără restricții și gratuit în orice scop. Sprijinul financiar pentru dezvoltatorii SQLite este asigurat de un consorțiu special creat, care include companii precum Bentley, Bloomberg, Expensify și Navigation Data Standard.
Modificări principale:
- Toate funcțiile SQL pentru lucrul cu formatul JSON au fost rescrise și traduse în noul format intern de arbore de analiză JSONB, care este serializat și poate fi stocat în Bază de Date pentru a exclude analiza repetată a valorilor JSON. Noile versiuni ale funcțiilor care generează JSON generează acum formatul binar JSONB în loc de text. Funcției json_valid() i-a fost adăugat un al doilea argument opțional, prin care poate fi specificată o mască de biți care definește caracteristicile unui JSON valid (de exemplu, cu 0x04 va fi considerat valid un blob JSONB, cu 0x01 un JSON text în format RFC-8259, iar cu 0x05 ambele variante).
- În tabela virtuală FTS5, utilizată pentru căutarea textului complet, a fost adăugată opțiunea tokendata, care permite utilizarea tokenizerelor proprii.
- Optimizarea SQLITE_DIRECT_OVERFLOW_READ este activată implicit, prin care paginile overflow, a căror dimensiune depășește dimensiunea standard a paginii b-tree, sunt citite din fișier direct, ocolind cache-ul. Pentru a dezactiva aceasta la compilare, se poate folosi opțiunea „-DSQLITE_DIRECT_OVERFLOW_READ=0”.
- În planificatorul de interogări a fost crescută eficiența optimizării constrângerilor transitive și îmbunătățită ignorarea indexurilor care sunt considerate de calitate scăzută în timpul operației ANALYZE.
- În interfața liniei de comandă a fost îmbunătățit afișajul conținutului în codarea UTF-8 pe platforma Windows. S-a asigurat detectarea automată a utilizării interfeței CLI în timpul redării scripturilor „.dump” și realizarea modificărilor corespunzătoare în configurații, cum ar fi „.dbconfig defensive off” și „.dbconfig dqs_dll on”.
- În funcțiile SQL definite la nivel de aplicație a fost adăugat proprietatea SQLITE_RESULT_SUBTYPE, care permite apelarea din funcția sqlite3_result_subtype() pentru inspectarea subtipurilor argumentelor.
De asemenea, se poate menționa dezvoltarea în versiunile experimentale SQLite a unui nou mod de jurnalizare a tranzacțiilor - WAL2 ("PRAGMA journal_mode = wal2"), în care se folosesc două fișiere wal ("database-wal" și "database-wal2") în loc de unul. Când se scriu date în baza de date, se adaugă noi date în primul fișier wal. Dacă primul fișier wal ajunge la o dimensiune suficient de mare, se schimbă la scrierea în al doilea fișier. După ce s-a făcut comutarea la al doilea fișier wal, primul devine disponibil pentru fixarea modificărilor (checkpoint) și rescriere. În consecință, atunci când al doilea fișier wal ajunge la o dimensiune mare, se comută înapoi pe primul și așa mai departe, ceea ce rezolvă problema creșterii necontrolate a fișierului wal în situațiile în care tranzacția nu este fixată de mult timp sau se desfășoară procese de citire îndelungate.
Sursa: opennet.ro
