Am 9. April wurde die Version 3.53.0 der kompakten plattformübergreifenden Embedded-Datenbank veröffentlicht. SQLiteDer Projektcode ist in C geschrieben und wird als Gemeingut (Public Domain) verbreitet.
Änderungen:
- Ein Fehler wurde behoben. Fehler bei der WAL-Reset-Datenbankkorruption.Siehe die vorherige Nachricht. SQLite 3.51.3 mit einer Behebung für mögliche Datenbankbeschädigungen im WAL-Modus..
- Eine Bibliothek zur Formatierung von SQL-Abfrageergebnissen wurde hinzugefügt. Query Result Formatter (QRF) um eine bessere Lesbarkeit auf dem Bildschirm mit einer monospaced Schriftart zu gewährleisten.
- Es wurde die Methode format zu TCL-Schnittstelle um auf QRF aus TCL zuzugreifen.
- QRF wird jetzt in der Konsolenanwendung verwendet sqlite zur Formatierung von Abfrageergebnissen, was deren Darstellung verbessert hat.
- Neue SQL-Sprachfunktionen:
- Die Möglichkeiten des Befehls wurden verbessert ALTER TABLE um das Hinzufügen und Entfernen von NOT NULL- und CHECK-Beschränkungen zu ermöglichen.
- Der Befehl REINDEX EXPRESSIONS führt die Neubelegung von Ausdrücken-Indizes durch. Nützlich zur Wiederherstellung veralteter Ausdrücke-Indizes..
- Jetzt TEMP-Trigger können Daten aus den Tabellen des Hauptschemas ändern und/oder abfragen.
- Der Befehl wurde verbessert. VACUUM INTO: Wenn eine URI-Datei name als Zieladresse verwendet wird, die den Abfrageparameter reserve=N enthält (wobei N eine Zahl von 0 bis 255 ist), wird das Reservierungsvolumen für die zu erstellende Datenbankkopie auf N gesetzt.
- Neue SQL-Funktionen hinzugefügt:
- Updates in der Konsolenanwendung:
- Wesentliche Verbesserungen im Team .mode.
- Dank QRF-Erweiterung Das Formatieren der Ergebnisse wurde verbessert. Zum Beispiel werden Zahlen jetzt standardmäßig rechtsbündig im Tabellenmodus.
- Standardmäßig wird QRF jetzt bei der interaktiven Verwendung der Konsolenanwendung verwendet, um die Ergebnisse von Abfragen in Blöcken anzuzeigen, die mit Unicode-Zeichensätzen erstellt wurden, was die Lesbarkeit verbessert. Das veraltete Ausgabeformat wird bei der Batch-Ausführung von Befehlen zur Sicherstellung der Kompatibilität verwendet.
- Einzelne (nicht in Anführungszeichen gesetzte) Semikolons am Ende von Befehlen mit Punkt werden ohne Vorwarnung ignoriert. Das ist eine mögliche Inkompatibilität!
- Die Befehle .testcase und .check wurden korrigiert. Sie funktionieren jetzt tatsächlich und werden in den Skripten verwendet, die zum Standard-Testset von SQLite gehören, das im Quellcode enthalten ist.
- Befehlszeilenargumente, die den Mustern *.sql oder *.txt entsprechen und die Namen von nicht leeren Dateien darstellen, werden gelesen und als Skripte interpretiert, die SQL-Befehle und/oder [Punktbefehle] enthalten.https://sqlite.org/cli.html#dotcmd).
- Jetzt kann als Argument für den Befehl .timer once angegeben werden, sodass der Timer nur beim Ausführen der nächsten SQL-Abfrage ausgelöst wird.
- Der neue Parameter —timeout S des Befehls .progress führt dazu, dass SQL-Abfragen nach S Sekunden abgebrochen werden.
- Der Befehl .indexes wurde so geändert, dass das Argument PATTERN jetzt mit dem Namen des Indexes und nicht mit dem Namen der indexierten Tabelle übereinstimmt (was das Argument PATTERN tatsächlich nützlich macht). Außerdem wurden dem Befehl .indexes mehrere neue Optionen hinzugefügt.
- Verbesserungen in der C-API:
- sqlite3_str_truncate()
- sqlite3_str_free()
- sqlite3_carray_bind_v2()
- In die Funktion sqlite3_prepare_v3() wurde die Option hinzugefügt SQLITE_PREPARE_FROM_DDL, die es Implementierungen virtueller Tabellen ermöglicht, SQL-Befehle, die aus dem Datenbankschema stammen, sicher vorzubereiten.
- Eine Konstante wurde hinzugefügt SQLITE_UTF8_ZT, die als Kodierungsparameter in Funktionen verwendet werden kann sqlite3_result_text64() oder sqlite3_bind_text64() um anzugeben, dass der Wert in UTF-8 kodiert und nullterminiert ist.
- In die Funktion sqlite3_limit() wurde die Option hinzugefügt SQLITE_LIMIT_PARSER_DEPTH.
- In die Funktion sqlite3_db_config() wurde die Option hinzugefügt SQLITE_DBCONFIG_FP_DIGITS. Siehe auch Punkt 9b unten.
- Verbesserungen des Abfrageplaners:
- Für EXCEPT, INTERSECT und UNION wird immer der Sortier- und Merging-Algorithmus verwendet, da dieser fast immer schneller arbeitet als die Verwendung von Hash-Tabellen.
- Verbesserungen im Join-Order-Wahlmechanismus bei der Ausführung großer mehrseitiger Joins in einem Sternschema.
- Die Optimierung der Umwandlung von EXISTS in JOIN wurde so verbessert, dass die verpflichtenden JOIN-Bedingungen nicht unbedingt in inneren Schleifen liegen müssen, vorausgesetzt, alle Abhängigkeiten für die EXISTS-in-JOIN-Umwandlung befinden sich in äußeren Schleifen.
- Die Optimierung von omit-noop-join wurde so verbessert, dass sie Ketten von Joins überspringen kann, die das Ergebnis nicht beeinflussen.
- Optimierung von Abfragen, die GROUP BY e1 ORDER BY e2 verwenden, wobei e1 und e2 identisch sind, ausgenommen die Sortierreihenfolge ASC/DESC, mit einem einzigen Index.
- Optimierung des DISTINCT-Operators in virtuellen Tabellen, wenn die Ergebnismenge der Abfrage nicht vollständig dem ORDER BY-Kriterium entspricht.
- In Sitzungserweiterung Neue Schnittstellen hinzugefügt, die es der Anwendung ermöglichen, Änderungen einzeln in das Objekt sqlite3_changegroup einzufügen:
- Verbesserungen bei der Umwandlung von Fließkommazahlen ↔ Text.
- Der Code wurde vollständig neu geschrieben, um die Leistung zu verbessern.
- Das Runden erfolgt jetzt standardmäßig auf 17 signifikante Ziffern anstelle von 15, wie es in allen vorherigen Versionen der Fall war. Wenn erforderlich, kann dieser Wert mit der Funktion sqlite3_db_config mit der Option SQLITE_DBCONFIG_FP_DIGITS (siehe Punkt 6g oben).
- Die Möglichkeit wurde hinzugefügt Selbstwiederherstellung des Indexes zur Lösung des Problems. veralteter Ausdrücke-Indizes..
- In das Konsolenprogramm sqlite3_rsync wurde die Option -p|—port hinzugefügt.
- Die Unterstützung wurde eingestellt Windows RT.
- JavaScript/WASM
- Die VFS opfs-wl wurde hinzugefügt, die funktional identisch mit opfs ist, jedoch Web Locks für Sperren verwendet. Dies ermöglicht eine gerechtere Verteilung von Sperren im Vergleich zum opfs-Protokoll. opfs-wl erfordert die Funktion Atomics.waitAsync(), daher sind neuere Versionen von Browsern erforderlich als für opfs.
Quelle: linux.org.ru
