SQLite 3.35-Version

Die Veröffentlichung von SQLite 3.35, einem schlanken DBMS, das als Plug-in-Bibliothek konzipiert ist, wurde veröffentlicht. Der SQLite-Code wird in der öffentlichen Domäne verteilt, d. h. uneingeschränkt und kostenfrei für jeden Zweck nutzbar. 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.

Wichtigste Änderungen:

  • Integrierte mathematische Funktionen (log2(), cos(), tg(), exp(), ln(), pow() usw.) hinzugefügt, die in SQL verwendet werden können. Die Aktivierung integrierter Funktionen erfordert die Erstellung mit der Option „-DSQLITE_ENABLE_MATH_FUNCTIONS“.
  • Unterstützung für den Ausdruck „ALTER TABLE DROP COLUMN“ implementiert, um Spalten aus einer Tabelle zu entfernen und zuvor in einer bestimmten Spalte gespeicherte Daten zu löschen.
  • Die Implementierung der UPSERT-Operation (Hinzufügen oder Ändern) wurde erweitert und ermöglicht durch Ausdrücke wie „INSERT ... ON CONFLICT DO NOTHING/UPDATE“ das Ignorieren eines Fehlers oder das Durchführen einer Aktualisierung anstelle des Einfügens, wenn das Hinzufügen nicht möglich ist Daten über „INSERT“ (wenn beispielsweise bereits ein Datensatz vorhanden ist, können Sie UPDATE anstelle von INSERT ausführen). Mit der neuen Version können Sie mehrere ON CONFLICT-Blöcke angeben, die der Reihe nach verarbeitet werden. Der letzte „ON CONFLICT“-Block ermöglicht das Weglassen des Konfliktdefinitionsparameters, um „DO UPDATE“ zu verwenden.
  • Die DELETE-, INSERT- und UPDATE-Operationen unterstützen den RETURNING-Ausdruck, der zum Anzeigen des Inhalts eines gelöschten, eingefügten oder geänderten Datensatzes verwendet werden kann. Beispielsweise gibt der Ausdruck „insert into ... return id“ die Kennung der hinzugefügten Zeile zurück und „update ... set price = price * 1.10 returns price“ gibt den geänderten Preiswert zurück.
  • Für Common Table Expressions (CTE), die die Verwendung temporärer benannter Ergebnismengen ermöglichen, die mit der WITH-Anweisung angegeben werden, ist die Auswahl zwischen den Modi „MATERIALIZED“ und „NOT MATERIALIZED“ zulässig. „MATERIALIZED“ impliziert das Zwischenspeichern der in der Ansicht angegebenen Abfrage in einer separaten physischen Tabelle und das anschließende Abrufen von Daten aus dieser Tabelle. Bei „NOT MATERIALIZED“ werden bei jedem Zugriff auf die Ansicht wiederholte Abfragen durchgeführt. SQLite hatte ursprünglich den Standardmodus „NOT MATERIALIZED“, wurde aber jetzt für CTEs, die mehr als einmal verwendet werden, auf „MATERIALIZED“ geändert.
  • Reduzierter Speicherverbrauch beim Ausführen einer VACUUM-Operation für Datenbanken, die sehr große TEXT- oder BLOB-Werte enthalten.
  • Es wurde daran gearbeitet, die Leistung des Optimierers und Abfrageplaners zu steigern:
    • Optimierungen hinzugefügt, wenn die Min- und Max-Funktionen mit dem Ausdruck „IN“ verwendet werden.
    • Die Ausführung der EXISTS-Anweisung wurde beschleunigt.
    • Erweiterung von Unterabfragen aus UNION ALL-Ausdrücken implementiert, die als Teil von JOIN verwendet werden.
    • Der Index wird für IS NOT NULL-Ausdrücke verwendet.
    • Stellt sicher, dass „x IS NULL“ und „x IS NOT NULL“ für Spalten mit dem Attribut „NOT NULL“ in FALSE oder TRUE konvertiert werden.
    • Überspringen Sie die Prüfung von Fremdschlüsseln in UPDATE, wenn der Vorgang die mit dem Fremdschlüssel verknüpften Spalten nicht ändert.
    • Es ist erlaubt, Teile eines WHERE-Blocks in Unterabfragen mit Fensterfunktionen zu verschieben, solange diese Teile auf die Arbeit mit Konstanten und Kopien von Ausdrücken aus PARTITION BY-Blöcken, die in Fensterfunktionen verwendet werden, beschränkt sind.
  • Änderungen in der Befehlszeilenschnittstelle:
    • Befehl „.filectrl data_version“ hinzugefügt.
    • Die Befehle „.once“ und „.output“ unterstützen jetzt die Übergabe der Ausgabe an einen Handler, der über unbenannte Pipes („|“) aufgerufen wird.
    • Die Argumente „stmt“ und „vmstep“ wurden zum Befehl „.stats“ hinzugefügt, um Statistiken zu Ausdrücken und Zählern virtueller Maschinen anzuzeigen.

Source: opennet.ru

Kommentar hinzufügen