Rilascio del DBMS SQLite 3.31 con supporto per colonne generate

Pubblicato il rilascio SQLite 3.31.0, 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 cambiamenti:

  • È stata aggiunta la supporto per colonne generate (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 trusted_schema, impostazione SQLITE_DBCONFIG_TRUSTED_SCHEMA e l'opzione di compilazione «-DSQLITE_TRUSTED_SCHEMA», che consentono di gestire l'attivazione della protezione da attacchi 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à SQLITE_INNOCUOUS (funzioni innocue che non dipendono da parametri esterni e non possono essere utilizzate per compiere azioni malevole) e SQLITE_DIRECTONLY (solo chiamata diretta nelle query SQL, senza possibilità di applicarle in trigger, viste e schemi di dati);
  • Modulo aggiunto uuid con implementazione di funzioni per la gestione di UUID (RFC-4122);
  • Aggiunto PRAGMA hard_heap_limit e funzione sqlite3_hard_heap_limit64() per gestire la dimensione massima dell'heap;
  • Nel PRAGMA function_list aggiunto l'output del tipo, delle proprietà e del numero di argomenti per ogni funzione;
  • Nella tabella virtuale DBSTAT è stata aggiunta 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 PATH, passato alle funzioni JSON, aggiunta la compatibilità con la notazione degli array «#-N»;
  • Nel sistema di allocazione della memoria lookaside è 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 legacy_file_format, 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

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster