Release , eine leichtgewichtige DBMS, die als Plug-in-Bibliothek implementiert ist. Der Code von SQLite wird als Gemeinbesitz (public domain) verbreitet, d.h. er kann ohne Einschränkungen und kostenlos für beliebige Zwecke verwendet werden. Die finanzielle Unterstützung der SQLite-Entwickler erfolgt durch ein speziell gegründetes Konsortium, zu dem Unternehmen wie Adobe, Oracle, Mozilla, Bentley und Bloomberg gehören.
Haupt- :
- Unterstützung hinzugefügt für (berechnete Spalten), die es ermöglichen, beim Erstellen einer Tabelle eine Spalte zu definieren, deren Wert automatisch auf der Grundlage des Inhalts einer anderen Spalte berechnet wird. Generierte Spalten können sowohl virtuell (bei jedem Zugriff dynamisch erstellt) als auch in der DB gespeichert werden (bei jeder Aktualisierung der verbundenen Spalten gespeichert). Der Inhalt generierter Spalten ist nur im Nur-Lese-Modus verfügbar (Änderungen erfolgen nur durch Modifikation des Wertes in einer anderen Spalte, die bei der Berechnung verwendet wird). Zum Beispiel:
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
); - PRAGMA hinzugefügt , Einstellung und die Build-Option „-DSQLITE_TRUSTED_SCHEMA“, die es ermöglichen, den Schutz vor über Modifikationen des Datenbank-Schemas zu steuern. Bei aktivem Schutz wird die Verwendung von SQL-Funktionen (die nicht als SQLITE_INNOCUOUS gekennzeichnet sind) in Triggern, Views, CHECK- und DEFAULT-Ausdrücken, Indizes und generierten Spalten eingeschränkt. Auch die Verwendung von virtuellen Tabellen in Triggern und Views wird deaktiviert, sofern die virtuelle Tabelle nicht ausdrücklich mit dem Flag SQLITE_VTAB_INNOCUOUS deklariert ist.
- Die Möglichkeit wurde implementiert, bestimmten SQL-Funktionen in Anwendungen Eigenschaften zuzuweisen (harmlos Funktionen, die nicht von externen Parametern abhängen und nicht für böswillige Aktionen verwendet werden können) und (nur direkte Aufrufe in SQL-Abfragen, ohne die Möglichkeit, sie in Triggern, Views und Datenschemas zu verwenden);
- Ein Modul hinzugefügt mit Implementierung von Funktionen zur Verarbeitung von UUID (RFC-4122);
- PRAGMA hinzugefügt und die Funktion zur Steuerung der maximalen Heapgröße;
- In PRAGMA wurden Typ, Eigenschaften und Anzahl der Argumente jeder Funktion hinzugefügt;
- In die virtuelle Tabelle DBSTAT Aggregationsmodus der Daten;
- In sqlite3_open_v2() wurde die Option SQLITE_OPEN_NOFOLLOW implementiert, die das Öffnen symbolischer Links verbietet;
- Für das Argument , das an Funktionen zur JSON-Verarbeitung übergeben wird, wurde die Unterstützung der Array-Notation „#-N“ hinzugefügt;
- Im Speicherverwaltungssystem Es wurde Unterstützung für zwei separate Speicherpools implementiert, von denen jeder zur Zuweisung von Blöcken unterschiedlicher Größe verwendet werden kann (die Trennung ermöglicht eine erweiterte Anwendung des Lookaside-Systems, während die Größe des für jede Verbindung zugewiesenen Puffers von 120 auf 48 KB reduziert wird);
- Unterstützung für PRAGMA wurde eingestellt , die nicht mit VACUUM, generierten Spalten und abnehmenden Indizes kompatibel war (die Unterstützung des veralteten Formats kann über das Flag SQLITE_DBCONFIG_LEGACY_FILE_FORMAT in sqlite3_db_config() zurückgebracht werden).
Quelle: opennet.ru
