Veröffentlichung von DBMS SQLite 3.31 mit Unterstützung für generierte Spalten

Veröffentlicht freigeben SQLite 3.31.0, ein leichtes DBMS, das als Plug-in-Bibliothek konzipiert ist. Der SQLite-Code wird als Public Domain verteilt, d. h. dürfen uneingeschränkt und unentgeltlich für jeden Zweck genutzt werden. Die finanzielle Unterstützung für SQLite-Entwickler erfolgt durch ein eigens gegründetes Konsortium, dem Unternehmen wie Adobe, Oracle, Mozilla, Bentley und Bloomberg angehören.

Haupt- Veränderungen:

  • Unterstützung hinzugefügt generierte Spalten (berechnete Spalten), mit denen Sie beim Erstellen einer Tabelle eine Spalte definieren können, deren Wert automatisch basierend auf dem Inhalt einer anderen Spalte berechnet wird. Die generierten Spalten können entweder virtuell (bei jedem Zugriff spontan generiert) oder in der Datenbank gespeichert (bei jeder Aktualisierung der zugehörigen Spalten gespeichert) sein. Der Inhalt der generierten Spalten ist nur im Lesemodus verfügbar (Änderungen erfolgen nur durch Änderung des Werts in einer anderen an der Berechnung beteiligten Spalte). Zum Beispiel:

    ERSTELLEN SIE TABELLE t1(
    ein ganzzahliger Primärschlüssel,
    b INT,
    c TEXT,
    d INT IMMER ALS (a*abs(b)) VIRTUELL GENERIERT,
    e TEXT WIRD IMMER ALS (substr(c,b,b+1)) GESPEICHERT GENERIERT
    );

  • PRAGMA hinzugefügt vertrauenswürdiges_schema, Einstellung SQLITE_DBCONFIG_TRUSTED_SCHEMA und die Assembly-Option „-DSQLITE_TRUSTED_SCHEMA“, mit der Sie die Einbeziehung des Schutzes steuern können Anschläge durch Änderung des Datenschemas in der Datenbank. Aktiver Schutz schränkt die Verwendung von SQL-Funktionen (nicht als SQLITE_INNOCUOUS gekennzeichnet) in Triggern, Ansichten, CHECK- und DEFAULT-Anweisungen, Indizes und generierten Spalten ein. Die Verwendung virtueller Tabellen in Triggern und Ansichten ist ebenfalls deaktiviert, es sei denn, die virtuelle Tabelle wird explizit mit dem Flag SQLITE_VTAB_INNOCUOUS deklariert.
  • Die Möglichkeit, Eigenschaften zu in Anwendungen definierten SQL-Funktionen zuzuweisen, wurde implementiert SQLITE_INNOCUOUS (harmlose Funktionen, die nicht von externen Parametern abhängen und nicht zur Durchführung böswilliger Aktionen verwendet werden können) und SQLITE_DIRECTONLY (nur direkter Aufruf in SQL-Abfragen, ohne Möglichkeit der Verwendung in Triggern, Ansichten und Datenstrukturdiagrammen);
  • Modul hinzugefügt uuid mit Implementierung von Funktionen zur Verarbeitung von UUID (RFC-4122);
  • PRAGMA hinzugefügt hard_heap_limit und Funktion sqlite3_hard_heap_limit64() um die maximale Heap-Größe zu steuern;
  • In PRAGMA Funktionsliste Ausgabe von Typ, Eigenschaften und Anzahl der Argumente jeder Funktion hinzugefügt;
  • Zur virtuellen Tabelle DBSTAT hinzugefügt Datenaggregationsmodus;
  • sqlite3_open_v2() implementiert die Option SQLITE_OPEN_NOFOLLOW, mit der Sie das Öffnen symbolischer Links deaktivieren können;
  • Zur Argumentation PATH, an JSON-Funktionen übergeben, Unterstützung für „#-N“-Array-Notation hinzugefügt;
  • Im Speicherverteilungssystem sieh zur Seite Es wurde Unterstützung für zwei separate Speicherpools implementiert, von denen jeder zum Zuweisen von Blöcken unterschiedlicher Größe verwendet werden kann (durch die Trennung können Sie die Verwendung des Lookaside-Systems erweitern und gleichzeitig die Größe des jeder Verbindung zugewiesenen Puffers von 120 auf 48 reduzieren KB);
  • Der PRAGMA-Support wurde eingestellt Legacy-Dateiformat, das mit VACUUM, generierten Spalten und absteigenden Indizes nicht kompatibel war (Unterstützung für ältere Formate kann über das Flag SQLITE_DBCONFIG_LEGACY_FILE_FORMAT in sqlite3_db_config() zurückgegeben werden).

Source: opennet.ru

Kommentar hinzufügen