il rilascio , un DBMS leggero, fornito come libreria collegabile. Il codice di SQLite è distribuito come dominio pubblico, cioè può essere utilizzato senza restrizioni e gratuitamente per qualsiasi scopo. Il supporto finanziario per gli sviluppatori di SQLite è fornito da un consorzio appositamente creato, che comprende aziende come Adobe, Oracle, Mozilla, Bentley e Bloomberg.
Principali :
- È stata aggiunta la supporto per (colonne calcolate), che consentono di definire una colonna al momento della creazione della tabella, il cui valore viene calcolato automaticamente in base al contenuto di un'altra colonna. Le colonne generate possono essere sia virtuali (create al volo ad ogni accesso), sia memorizzate nel DB (conservate ad ogni aggiornamento delle colonne correlate). Il contenuto delle colonne generate è accessibile solo in modalità di sola lettura (le modifiche sono effettuate solo tramite la modifica del valore in un'altra colonna utilizzata nel calcolo). Ad esempio:
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
); - Aggiunti PRAGMA , impostazione e l'opzione di compilazione «-DSQLITE_TRUSTED_SCHEMA», che consentono di gestire l'attivazione della protezione da modifiche alla schema dati nel DB. Con la protezione attiva, l'uso delle funzioni SQL (non contrassegnate come SQLITE_INNOCUOUS) in trigger, viste, espressioni CHECK e DEFAULT, indici e colonne generate è limitato. È inoltre disattivato l'uso di tabelle virtuali in trigger e viste, se la tabella virtuale non è esplicitamente dichiarata con il flag SQLITE_VTAB_INNOCUOUS.
- Implementata la possibilità di assegnare a determinate funzioni SQL applicative le proprietà (funzioni innocue che non dipendono da parametri esterni e non possono essere utilizzate per compiere azioni malevole) e (solo chiamata diretta nelle query SQL, senza possibilità di applicarle in trigger, viste e schemi di dati);
- Modulo aggiunto con implementazione di funzioni per la gestione di UUID (RFC-4122);
- Aggiunto PRAGMA e funzione per gestire la dimensione massima dell'heap;
- Nel PRAGMA aggiunto l'output del tipo, delle proprietà e del numero di argomenti per ogni funzione;
- Nella tabella virtuale DBSTAT modalità di aggregazione dei dati;
- In sqlite3_open_v2() implementata l'opzione SQLITE_OPEN_NOFOLLOW, che consente di vietare l'apertura di link simbolici;
- Per l'argomento , passato alle funzioni JSON, aggiunta la compatibilità con la notazione degli array «#-N»;
- Nel sistema di allocazione della memoria è stata realizzata la supporto per due pool di memoria separati, ciascuno dei quali può essere utilizzato per allocare blocchi di dimensioni diverse (la suddivisione consente di ampliare l'applicazione del sistema lookaside, riducendo nel contempo la dimensione del buffer allocato per ogni connessione da 120 a 48 KB);
- Interrotta la supporto PRAGMA , che era incompatibile con VACUUM, colonne generate e indici decrecenti (il supporto per il formato obsoleto può essere ripristinato tramite il flag SQLITE_DBCONFIG_LEGACY_FILE_FORMAT in sqlite3_db_config()).
Fonte: opennet.ru
