Rilascio di DBMS SQLite 3.31 con supporto per colonne generate

pubblicato rilasciare SQLite 3.31.0, un DBMS leggero progettato come libreria di plug-in. Il codice SQLite è distribuito come dominio pubblico, ovvero può essere utilizzato senza restrizioni e gratuitamente per qualsiasi scopo. Il supporto finanziario per gli sviluppatori SQLite è fornito da un consorzio appositamente creato, che comprende aziende come Adobe, Oracle, Mozilla, Bentley e Bloomberg.

Il principale modifiche:

  • Aggiunto supporto colonne generate (colonne calcolate), che consentono di definire una colonna quando si crea una tabella il cui valore viene calcolato automaticamente in base al contenuto di un'altra colonna. Le colonne generate possono essere virtuali (generate al volo ad ogni accesso) o archiviate nel database (salvate ogni volta che le relative colonne vengono aggiornate). Il contenuto delle colonne generate è disponibile solo in modalità lettura (le modifiche vengono apportate solo modificando il valore in un'altra colonna coinvolta nel calcolo). Per esempio:

    CREA TABELLA t1(
    una CHIAVE PRIMARIA INTERA,
    bINT,
    c TESTO,
    d INT GENERATO SEMPRE COME (a*abs(b)) VIRTUALE,
    e TESTO GENERATO SEMPRE COME (substr(c,b,b+1)) MEMORIZZATO
    );

  • Aggiunto PRAGMA trust_schema, collocamento SQLITE_DBCONFIG_TRUSTED_SCHEMA e l'opzione di assembly “-DSQLITE_TRUSTED_SCHEMA”, che consente di controllare l'inclusione della protezione contro attacchi attraverso la modifica dello schema dei dati nel database. La protezione attiva limita l'uso delle funzioni SQL (non contrassegnate come SQLITE_INNOCUOUS) in trigger, viste, istruzioni CHECK e DEFAULT, indici e colonne generate. Anche l'utilizzo delle tabelle virtuali nei trigger e nelle viste è disabilitato a meno che la tabella virtuale non venga dichiarata esplicitamente con il flag SQLITE_VTAB_INNOCUOUS.
  • Implementata la possibilità di assegnare proprietà alle funzioni SQL definite nelle applicazioni SQLITE_INNOCUOSA (funzioni innocue che non dipendono da parametri esterni e non possono essere utilizzate per eseguire azioni dannose) e SQLITE_DIRECTONLY (solo chiamata diretta nelle query SQL, senza possibilità di utilizzo in trigger, viste e diagrammi di struttura dati);
  • Modulo aggiunto uuid con implementazione di funzioni per l'elaborazione dell'UUID (RFC-4122);
  • Aggiunto PRAGMA hard_heap_limit e funzione sqlite3_hard_heap_limit64() per controllare la dimensione massima dell'heap;
  • In PRAGMA lista_funzioni aggiunto output di tipo, proprietà e numero di argomenti di ciascuna funzione;
  • Alla tabella virtuale DBSTAT aggiunto modalità di aggregazione dei dati;
  • sqlite3_open_v2() implementa l'opzione SQLITE_OPEN_NOFOLLOW, che permette di disabilitare l'apertura dei collegamenti simbolici;
  • Per argomento PERCORSO, passato alle funzioni JSON, aggiunto il supporto per la notazione di array "#-N";
  • Nel sistema di distribuzione della memoria guardare oltre è stato implementato il supporto per due pool di memoria separati, ognuno dei quali può essere utilizzato per allocare blocchi di dimensioni diverse (la separazione consente di espandere l'utilizzo del sistema lookaside, riducendo al contempo la dimensione del buffer assegnato a ciascuna connessione da 120 a 48 KB);
  • Il supporto PRAGMA è stato interrotto formato_file_legato, che era incompatibile con VACUUM, colonne generate e indici discendenti (il supporto del formato legacy può essere restituito tramite il flag SQLITE_DBCONFIG_LEGACY_FILE_FORMAT in sqlite3_db_config()).

Fonte: opennet.ru

Aggiungi un commento