Die SQLite-Version 3.51 wurde veröffentlicht, eine leichtgewichtige Datenbank, die als dynamische Bibliothek bereitgestellt wird. Der Code von SQLite wird als Gemeingut (public domain) verteilt, d.h. er kann ohne Einschränkungen und kostenlos für jegliche Zwecke verwendet werden. Die finanzielle Unterstützung der SQLite-Entwickler erfolgt durch ein eigens gegründetes Konsortium.
Hauptänderungen:
- Neue JSON-Funktionen jsonb_each() und jsonb_tree() wurden hinzugefügt, die sich von den zuvor verfügbaren Funktionen json_each() und json_tree() dadurch unterscheiden, dass sie für Daten des Typs Array oder Objekt einen JSONB-Wert zurückgeben.
- Der Code der Erweiterungen carray und percentile wurde in die Basisdatei 'sqlite3.c' mit dem eingebetteten SQLite-Code verschoben. Standardmäßig sind diese Ergänzungen deaktiviert und erfordern bei der Kompilierung die Angabe der Parameter '-DSQLITE_ENABLE_CARRAY' und '-DSQLITE_ENABLE_PERCENTILE'.
- Die Schnittstelle zur Verwendung von SQLite in Skripten der Programmiersprache Tcl wurde verbessert. Der Befehl 'eval' hat ein Flag '-asdict' erhalten, um Zeilen mit dem Typ 'dict' anstelle von 'array' zu setzen. Es wurde die Möglichkeit hinzugefügt, benutzerdefinierte Funktionen zu unterbrechen, um den Wert NULL zurückzugeben.
- Änderungen der Befehlszeilenschnittstelle:
- Die Genauigkeit des Befehls '.timer' wurde auf Mikrosekunden erhöht;
- In den Formatierungsmodi 'box' und 'column' wird die Unterstützung für doppelt breite Zeichen realisiert;
- Der Befehl '.imposter' kann nun im Nur-Lesen-Modus imposter-Tabellen bereitstellen (die den Zugriff auf Daten im Index wie bei einer Tabelle erlauben), die mit der VACUUM-Operation arbeiten und nicht mit dem Flag '—unsafe-testing' ausgeführt werden müssen;
- In das sqlite-Utility und den Befehl '.open' wurde die Option '—ifexists' hinzugefügt.
- Die maximale Breite der Zeile, die mit dem Befehl '.width' eingestellt wird, ist auf 30000 Zeichen begrenzt.
- Es wurden Leistungsoptimierungen vorgenommen:
- Die CPU-Belastung bei der Fixierung von Transaktionen mit Lesezugriff wurde verringert;
- Die Bestimmung von JOIN-Operationen, die aufgrund des Fehlens von Zeilen in einer oder mehreren Tabellen keine Zeilen zurückgeben, wurde verbessert;
- Die Ausführung von skalaren Unterabfragen, die das Ergebnis nicht beeinflussen, wurde ausgeschlossen;
- Die Leistung von Fensterfunktionen in Abfragen mit dem Ausdruck 'BETWEEN 😡 FOLLOWING AND :y FOLLOWING' und einem sehr hohen Wert ':y' wurde beschleunigt.
- Pragma 'PRAGMA wal_checkpoint=NOOP' und die API-Funktion sqlite3_wal_checkpoint() zur Fixierung von Änderungen im WAL-Protokoll wurden hinzugefügt.
- Im API wurden die Funktionen sqlite3_set_errmsg() und sqlite3_db_status64() hinzugefügt.
- In der JavaScript/WASM-Version von SQLite wurde die Unterstützung für den Build in WebAssembly mit 64-Bit-Zeilenzählern implementiert.
- Die Widerstandsfähigkeit gegen Beschädigungen von Datenbanken in Anwendungen, die POSIX-Sperren über den Aufruf close() entfernen, wurde erhöht.
- Die Unterstützung der Plattform VxWorks wurde verbessert.
Quelle: opennet.ru
