È stata pubblicata la versione 3.45 di SQLite, un sistema di gestione di database leggero realizzato come libreria collegabile. Il codice di SQLite è distribuito come pubblico dominio, il che significa che può essere utilizzato senza restrizioni e gratuitamente per qualsiasi scopo. Il supporto finanziario per gli sviluppatori di SQLite è fornito da un consorzio creato appositamente, composto da aziende come Bentley, Bloomberg, Expensify e Navigation Data Standard.
Principali modifiche:
- Tutte le funzioni SQL per lavorare con il formato JSON sono state riscritte e convertite in un nuovo formato interno ad albero di analisi JSONB, che viene serializzato e può essere memorizzato nel database per evitare il ri-analisi quando si utilizzano valori JSON. Le nuove versioni delle funzioni che formano JSON generano ora un formato binario JSONB invece di quello testuale. È stato aggiunto un secondo argomento facoltativo alla funzione json_valid(), attraverso il quale è possibile fornire una maschera di bit che definisce le caratteristiche di un JSON valido (ad esempio, specificando 0x04, un blob JSONB sarà considerato valido, specificando 0x01, un JSON testuale in formato RFC-8259, e specificando 0x05, entrambi i formati).
- Nella tabella virtuale FTS5, utilizzata per la ricerca full-text, è stata aggiunta l'opzione tokendata, che consente di utilizzare tokenizer personalizzati.
- Per impostazione predefinita è attivata l'ottimizzazione SQLITE_DIRECT_OVERFLOW_READ, in cui le pagine di overflow, di dimensioni maggiori rispetto alla dimensione standard della pagina b-tree, vengono lette direttamente dal file, bypassando la cache. Per disattivarla durante la compilazione, è possibile utilizzare l'opzione «-DSQLITE_DIRECT_OVERFLOW_READ=0».
- Nello scheduler delle query è stata migliorata l'efficacia dell'ottimizzazione dei vincoli transitivi e migliorato l'ignoramento degli indici ritenuti di bassa qualità durante l'esecuzione dell'operazione ANALYZE.
- Nell'interfaccia a riga di comando è stato migliorato il rendering del contenuto in codifica UTF-8 sulla piattaforma Windows. È stato garantito il riconoscimento automatico dell'uso dell'interfaccia CLI durante l'esecuzione di script «.dump» e sono state apportate le modifiche appropriate alle impostazioni, come «.dbconfig defensive off» e «.dbconfig dqs_dll on».
- Nelle funzioni SQL definite a livello dell'applicazione è stata aggiunta la proprietà SQLITE_RESULT_SUBTYPE, che consente di chiamare la funzione sqlite3_result_subtype() per ispezionare i sottotipi degli argomenti.
Inoltre, vale la pena notare lo sviluppo di una nuova modalità di registrazione delle transazioni — WAL2 («PRAGMA journal_mode = wal2») nelle versioni sperimentali di SQLite, in cui vengono utilizzati due file wal («database-wal» e «database-wal2») anziché uno. Quando si scrivono dati nel database, i nuovi dati vengono aggiunti al primo file wal. Se il primo file wal raggiunge dimensioni sufficientemente grandi, si passa alla scrittura nel secondo file. Dopo il passaggio al secondo file wal, il primo diventa disponibile per la registrazione delle modifiche (checkpoint) e la riscrittura. Di conseguenza, quando il secondo file wal raggiunge dimensioni elevate, si torna a scrivere nel primo, e così via, risolvendo il problema dell'eccessivo aumento del file wal in situazioni in cui la transazione non viene registrata a lungo o si eseguono processi di lettura prolungati.
Fonte: opennet.ru
