SQLite 3.53: Wichtige Fehlerbehebungen und neue SQL-Funktionen
SQLite 3.53 ist erschienen – eine kompakte, einbettbare Datenbank-Engine in C im Public Domain. Die Bibliothek eignet sich ideal zur Integration in Anwendungen ohne Lizenzbeschränkungen. Die vorherige Version 3.51 stammt aus November 2025, Version 3.52 wurde gestrichen. Das Konsortium finanziert die Entwicklung.
Diese Version konzentriert sich auf Stabilität im WAL-Modus, Erweiterungen für ALTER TABLE und JSON-Tools. Query-Optimierungen steigern die Leistung bei Table-Merges sowie UNION/INTERSECT/EXCEPT-Operationen.
Kritische Behebung für Datenbankkorruption im WAL
Ein Fehler, der zu Datenbankkorruption im Write-Ahead-Logging-Modus führte, wurde behoben. Das Problem bestand seit 2010 (SQLite 3.7.0) und trat bei Race Conditions auf: mehrere Verbindungen öffnen die Datenbank gleichzeitig und versuchen, Transaktionen in dieselbe Datei zu schreiben oder zu committen. Der Fehler war selten und nur in Testszenarien reproduzierbar.
Diese Korrektur ist entscheidend für mehrthreadige Anwendungen mit WAL, bei denen paralleler Zugriff üblich ist. Mittel- und Senior-Entwickler werden es zu schätzen wissen, diese latente Schwachstelle ohne Regressionsfehler zu beseitigen.
DDL-Erweiterungen: ALTER TABLE und REINDEX EXPRESSIONS
Der ALTER TABLE-Befehl unterstützt nun das Entfernen von NOT NULL- und CHECK-Constraints. Nützlich für die schrittweise Weiterentwicklung des Schemas ohne Neuerstellung der gesamten Tabelle.
Der neue REINDEX EXPRESSIONS-Befehl baut Indizes auf Ausdrücken (Funktionen über Spalten oder Operationen) neu auf. Er dient der Wiederherstellung veralteter Indizes nach Datenänderungen.
Beispielszenario:
- Ein Index auf UPPER(column) verschlechtert sich bei Updates.
- REINDEX EXPRESSIONS(name) stellt die Integrität wieder her.
Temporäre Trigger (CREATE TEMP TRIGGER) auf Tabellen aus anderen Datenbanken können nun Tabellen modifizieren oder Daten lesen.
JSON-Funktionen und VACUUM-Verbesserungen
Neue Funktionen json_array_insert() und jsonb_array_insert() zum Einfügen von Elementen in JSON-Arrays unter Erhalt von Reihenfolge und Typen.
VACUUM INTO mit URL-Zielen unterstützt nun reserve=N zur Festlegung der Anzahl von Backup-Kopien der Datenbank.
Liste neuer JSON-Features:
- json_array_insert(json, path, value): Einfügen per Pfad.
- jsonb_array_insert(jsonb, path, value): binäre Variante für bessere Performance.
- Unterstützung für positions- und namensbasiertes Einfügen.
Verbesserungen am sqlite3 CLI-Utility
Die QRF (Query Result Formatter)-Bibliothek ist integriert für übersichtliche Query-Result-Ausgaben.
Befehlsänderungen:
.modeerweitert um neue Formate (gerahmte Tabellen standardmäßig).- Zahlen rechtsbündig in Tabellenausgaben.
- Semikolon
;nach Dot-Commands ignoriert. - .sql/.txt-Dateien von der Kommandozeile werden als SQL + Dot-Commands ausgeführt.
.timer once— Timing nur für die nächste Query..progress -timeout S— Unterbrechung bei Timeout..indexeswendet Muster auf Indexnamen an, nicht auf Tabellen.
Diese Features beschleunigen Debugging und Analyse im Terminal.
Optimierungen und Plattformänderungen
Der Query Planner ist für Table-Merges und EXCEPT/INTERSECT/UNION optimiert – Leistungsgewinne bei großen Datensätzen.
Float-zu-Text-Konvertierung ist schneller (sprintf-ähnliche Operationen).
WebAssembly-Build: neues VFS opfs-wl nutzt Web Locks API für Locking, ähnlich wie opfs.
sqlite3_rsync: -p/--port-Option für Netzwerk-Rsync.
Windows RT-Unterstützung eingestellt.
Float-zu-Text-Performance durch Vektorisierung in Hot Paths verbessert.
Wichtige Punkte
- Seltener, aber fataler WAL-Race bei Multi-Connection-Zugriff behoben.
- ALTER TABLE entfernt NOT NULL/CHECK; REINDEX EXPRESS für ausdrucksbasierte Indizes.
- json_array_insert() und CLI mit QRF für JSON/Debugging.
- Optimierungen für UNION/EXCEPT und Float-Formatierung.
- WebAssembly: opfs-wl VFS mit Web Locks.
— Editorial Team
Noch keine Kommentare.