SQLite 3.20 erweitert die Kommandozeilenbefehle

Die schlanke Datenbank bringt unter anderem Tab-Completion und ergänzt die sogenannten "Dot Commands". Außerdem gibt es neue Erweiterungen für virtuelle Tabellen und ein sichereres Interface zur Übergabe von Zeigern.

vorlesen Druckansicht
SQLite 3.20 erweitert die Kommandozeilenbefehle
Lesezeit: 3 Min.

Die eingebettete Datenbank SQLite ist in der Version 3.20 erschienen, die einige nennenswerte Neuerungen mitbringt, nachdem die Änderungen seit der im Februar veröffentlichten Versionen 3.17 eher unspektakulär waren. Unter anderem haben die Macher das Interface zur Übergabe von Nicht-SQL-Werten zwischen Unterkomponenten beziehungsweise zwischen der Anwendung und ihren Erweiterungen erneuert. Damit sind potenziell auch Inkompatibilitäten in Extensions verbunden.

Die drei neuen Interfaces sqlite3_bind_pointer(), sqlite3_result_pointer() und sqlite3_value_pointer() dienen zur Übergabe von Zeigern. Bisher mussten Entwickler diese als BLOBs (Binary Large Object) oder Integer-Werte über die entsprechenden Funktionen sqlite3_bind_blob() beziehungsweise sqlite3_bind_int64() übergeben. Damit war ein Sicherheitsrisiko verbunden, da Angreifer die Werte leichter verändern konnten. Die Dokumentation zu den Pointer Passing Interfaces zeigt die Angriffsmöglichkeiten, die das neue Interface verhindern soll.

sqlite3 kennt spezielle Kommandozeilenbefehle, die Dot Commands heißen und passend dazu mit einem "." starten. Das besondere daran ist, dass die Anwendung sie im Gegensatz zu den anderen Befehlen nicht direkt an die SQLite-Bibliothek durchreicht, sondern abfängt und selbst interpretiert. Unter anderem gibt es Optionen zum Klonen oder für das Backup von Datenbanken.

Mit SQLite 3.20 erweitert der neue Befehl .cd das Repertoire der Dot Commands. Er dient analog zum herkömmlichen Change-Directory-Befehl cd zum Wechsel des aktuellen Verzeichnisses. Außerdem haben die Macher die Befehle .schema, .tables, .import und .dump erweitert. Dank der neuen COMPLETION Extension bietet SQLite nun Tab-Completion, mit der es Vorschläge zur Vervollständigung eines angefangenen Befehls macht.

Darüber hinaus gibt es neue Erweiterungen für virtuelle Tabellen. Letztere sind eine Besonderheit in SQLite: Das System greift über sie auf unterschiedliche Datenquellen zu, die es wie normale Tabellen behandelt. Die neue UNION Virtual Table verbindet mehrere Rowid Tables zu einer virtuellen großen Tabelle. Rowid Tables sind mehr oder weniger beliebige Tabellen, die aber eine rowid zum eindeutigen Identifizieren der Zeile haben müssen und nicht virtuell sein dürfen. Die ebenfalls neue virtuelle Tabelle SQLITE STMT enthält alle Prepared-Statement-Objekte einer Datenbankverbindung.

Weitere Neuerungen wie die Erweiterungen für Query Planner lassen sich dem Release Log entnehmen. Demnach soll die aktuelle Version dank diverser Optimierungen die CPU etwa 2 Prozent weniger belasten.

SQLite ist eine relationale Datenbank, die als Softwarebibliothek umgesetzt ist. Vor allem durch den Verzicht auf einen eigenen Serverprozess ist sie schlanker als andere Datenbanksysteme. Sie greift direkt lesend und schreibend auf Dateien zu. Auf der Download-Seite stehen neben dem Source Code vorkompilierte Binaries unter anderem fĂĽr Windows, Linux, macOS und Android bereit (rme)