Die SQLite 3.51 Version wurde veröffentlicht, ein leichtgewichtiges DBMS, das als dynamische Bibliothek bereitgestellt wird. Der Code von SQLite wird als Public Domain veröffentlicht, d.h. er kann ohne Einschränkungen und kostenlos für beliebige Zwecke verwendet werden. Die finanzielle Unterstützung für die Entwickler von SQLite wird von einem eigens gegründeten Konsortium geleistet.
Wesentliche Änderungen:
- Neue JSON-Funktionen jsonb_each() und jsonb_tree() wurden hinzugefügt, die sich von den bisher verfügbaren Funktionen json_each() und json_tree() unterscheiden, da sie für Daten mit den Typen Array oder Objekt JSONB-Werte zurückgeben.
- Der Code der Erweiterungen carray und percentile wurde in die Hauptdatei „sqlite3.c“ mit dem integrierten SQLite-Code übertragen. Standardmäßig sind diese Erweiterungen deaktiviert und erfordern bei der Erstellung die Angabe der Parameter „-DSQLITE_ENABLE_CARRAY“ und „-DSQLITE_ENABLE_PERCENTILE“.
- Die Schnittstelle für die Nutzung von SQLite in Tcl-Skripten wurde verbessert. Der Befehl „eval“ erhielt die Option „-asdict“, um Strings im Typ „dict“ anstelle von „array“ darzustellen. Auch die Möglichkeit wurde hinzugefügt, benutzerdefinierte Funktionen zu unterbrechen, um NULL-Werte zurückzugeben.
- Änderungen in der Befehlszeilenschnittstelle:
- Die Genauigkeit des Befehls „.timer“ wurde auf Mikrosekunden erhöht;
- In den Formatmodi „box“ und „column“ wurde die Unterstützung für Symbole mit doppelter Breite implementiert;
- Der Befehl „.imposter“ kann jetzt nur im Nur-Lese-Modus Imposter-Tabellen bereitstellen (ermöglicht den Zugriff auf Daten im Index wie auf eine Tabelle), die mit der VACUUM-Operation arbeiten und nicht mit dem Flag „—unsafe-testing“ gestartet werden müssen;
- Der sqlite-Befehl „.open“ hat die Option „—ifexists“ hinzugefügt.
- Die maximale Zeichenbreite, die mit dem Befehl „.width“ festgelegt wird, ist auf 30.000 Zeichen beschränkt.
- Leistungsoptimierungen wurden vorgenommen:
- Die CPU-Belastung bei Transaktionsfixierungen, die durch Lesezugriff eingeschränkt sind, wurde reduziert;
- Die Erkennung von Merge-Operationen (JOIN), die keine Zeilen zurückgeben, weil eine oder mehrere Tabellen keine Zeilen enthalten, wurde verbessert;
- Die Ausführung von skalaren Unterabfragen, die keinen Einfluss auf das Ergebnis haben, wurde ausgeschlossen;
- Die Verarbeitung von Fensterfunktionen in Abfragen mit dem Ausdruck „BETWEEN 😡 FOLLOWING AND :y FOLLOWING“ und einem sehr großen Wert für „:y“ wurde beschleunigt.
- Es wurde die Pragmas „PRAGMA wal_checkpoint=NOOP“ und die API-Funktion sqlite3_wal_checkpoint() zur Fixierung von Änderungen im WAL-Log 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-Pointern implementiert.
- Die Widerstandsfähigkeit gegen Datenbankbeschädigungen in Anwendungen, die POSIX-Sperren über den Close()-Aufruf entfernen, wurde erhöht.
- Die Plattformunterstützung für VxWorks wurde verbessert.
Quelle: opennet.ru
