È stata pubblicata la versione 3.51 di SQLite, un database leggero sotto forma di libreria collegabile. Il codice di SQLite è distribuito come dominio pubblico, 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 appositamente creato.
Variazioni principali:
- Sono state aggiunte nuove funzioni JSON jsonb_each() e jsonb_tree(), che si differenziano dalle precedenti funzioni json_each() e json_tree() in quanto restituiscono un valore JSONB per dati di tipo array o oggetto.
- Il codice delle estensioni carray e percentile è stato trasferito nel file di base «sqlite3.c» con codice SQLite incorporato. Di default, i dati delle estensioni sono disabilitati e richiedono che siano specificati i parametri «-DSQLITE_ENABLE_CARRAY» e «-DSQLITE_ENABLE_PERCENTILE» durante la compilazione.
- È stata migliorata l'interfaccia per l'utilizzo di SQLite negli script in Tcl. È stato aggiunto un flag «-asdict» al comando «eval» per restituire stringhe utilizzando il tipo «dict» invece di «array». È stata aggiunta la possibilità di interrompere le funzioni utente per restituire un valore NULL.
- Modifiche all'interfaccia della riga di comando:
- La precisione del comando «.timer» è stata aumentata fino ai microsecondi;
- Nei formati di output «box» e «column» è stato implementato il supporto per i caratteri a doppia larghezza;
- Il comando «.imposter» ora può fornire in modalità sola lettura le tabelle impostore (che consentono di accedere ai dati nell'indice come se fossero una tabella), funzionanti con l'operazione VACUUM e non richiedenti l'avvio con il flag «—unsafe-testing»;
- All'utilità sqlite e al comando «.open» è stata aggiunta l'opzione «—ifexists».
- La larghezza massima della riga, impostata tramite il comando «.width», è limitata a 30000 caratteri.
- Sono state apportate ottimizzazioni delle prestazioni:
- Ridotto il carico della CPU durante il commit delle transazioni limitate all'accesso in sola lettura;
- Migliorato il riconoscimento delle operazioni di join (JOIN) che non restituiscono righe a causa dell'assenza di righe in una o più tabelle;
- Evitato l'esecuzione di sottoquery scalari che non influenzano il risultato;
- Accelerato il funzionamento delle funzioni finestra nelle query con espressione «BETWEEN 😡 FOLLOWING AND :y FOLLOWING» e con un valore molto grande di «:y».
- È stata aggiunta la pragma «PRAGMA wal_checkpoint=NOOP» e la funzione API sqlite3_wal_checkpoint() per il commit delle modifiche nel WAL-log.
- All'API sono state aggiunte le funzioni sqlite3_set_errmsg() e sqlite3_db_status64().
- Nella versione JavaScript/WASM di SQLite è stato implementato il supporto per la compilazione in WebAssembly con puntatori a 64 bit.
- È stata aumentata la resistenza ai danni del database nelle applicazioni che rimuovono i blocchi POSIX tramite la chiamata close().
- Migliorato il supporto per la piattaforma VxWorks.
Fonte: opennet.ru
