Am 9. April fand die Veröffentlichung der kompakten plattformübergreifenden eingebetteten DBMS Version 3.53.0 statt. SQLite. Der Projektcode ist in C geschrieben und wird als Public Domain verbreitet.
Änderungen:
- Ein Fehler wurde behoben WAL-Reset-Datenbankkorruptionsfehler. Siehe die vorherige Nachricht SQLite 3.51.3 mit einer Behebung möglicher Datenbankbeschädigungen im WAL-Modus.
- Eine Bibliothek zur Formatierung von SQL-Abfrageergebnissen wurde hinzugefügt. Query Result Formatter (QRF) um die Lesbarkeit auf dem Bildschirm mit einer Nicht-Proportionalschrift zu verbessern.
- Eine Methode wurde hinzugefügt, format zu TCL-Schnittstelle für den Zugriff auf QRF aus TCL.
- QRF wird nun im Konsolenwerkzeug sqlite zur Formatierung von Abfrageergebnissen verwendet, was die Anzeige verbessert hat.
- Neue Funktionen der SQL-Sprache:
- Die Funktionalität des Befehls wurde verbessert ALTER TABLE um das Hinzufügen und Entfernen von NOT NULL- und CHECK-Beschränkungen zu ermöglichen.
- Operator REINDEX EXPRESSIONS führt eine Neuindizierung von Ausdrucksindizes durch. Nützlich zur Wiederherstellung veralteter Ausdrucksindizes.
- Jetzt TEMP-Trigger können Daten aus den Tabellen des Hauptschemas ändern und/oder abfragen.
- Der Befehl wurde verbessert VACUUM INTO: Wenn eine URI, die einen Reserve=N-Parameter (wobei N eine Zahl von 0 bis 255 ist) enthält, als Zieladresse angegeben wird, wird das Reservierungsvolumen für die zu erstellende Datenbankkopie auf N gesetzt.
- Neue SQL-Funktionen hinzugefügt:
- Updates in Konsolenwerkzeug:
- Bedeutende Verbesserungen des Befehls .mode.
- Dank QRF-Erweiterung Verbesserte Formatierung der Ergebnisse. Zum Beispiel werden Zahlen jetzt standardmäßig rechtsbündig im Tabellenformat.
- Standardmäßig wird QRF jetzt bei der interaktiven Verwendung des Konsolenwerkzeugs zur Anzeige von Abfrageergebnissen in Blöcken verwendet, die mit Unicode-Zeichensymbolen erstellt wurden, was die Lesbarkeit erhöht. Das veraltete Ausgabeformat wird bei der Batch-Ausführung von Befehlen aus Kompatibilitätsgründen verwendet.
- Einzelne (nicht in Anführungszeichen stehende) Semikolons am Ende von Befehlen mit Punkt werden ohne Warnung ignoriert. Das könnte zu Inkompatibilitäten führen!
- Die Befehle .testcase und .check wurden korrigiert. Sie funktionieren jetzt tatsächlich und werden in den Skripten verwendet, die im Standard-Testsatz von SQLite enthalten sind.
- Befehlszeilenargumente, die mit den Mustern *.sql oder *.txt übereinstimmen und nicht leere Dateinamen sind, werden gelesen und als Skripte interpretiert, die SQL-Anweisungen und/oder [Punktbefehle] enthalten.https://sqlite.org/cli.html#dotcmd).
- Jetzt kann als Argument des Befehls .timer once angegeben werden, um den Timer nur bei der Ausführung der folgenden SQL-Abfrage auszulösen.
- 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 indizierten Tabelle übereinstimmt (was das Argument PATTERN tatsächlich nützlich macht). Außerdem wurden dem Befehl .indexes mehrere neue Optionen hinzugefügt.
- Verbesserungen 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-Anweisungen, die aus dem Datenbankschema stammen, sicher vorzubereiten.
- Eine Konstante wurde hinzugefügt SQLITE_UTF8_ZT, die als Kodierungsparameter in den 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 Zusammenführungsalgorithmus verwendet, da dieser in der Regel schneller funktioniert als die Verwendung von Hash-Tabellen.
- Verbesserungen im Mechanismus zur Auswahl der Join-Reihenfolge bei der Ausführung großer mehrseitiger Joins in einem Sternschema.
- Die Optimierung der Umwandlung von EXISTS in JOIN wurde so verbessert, dass die einzufügenden JOIN-Bedingungen nicht unbedingt in den inneren Schleifen liegen müssen, solange alle Abhängigkeiten für die Schleifen, die EXISTS in JOIN umwandeln, in den äußeren Schleifen liegen.
- Die Optimierung omit-noop-join wurde verbessert, sodass sie eine Kette von Joins, die das Ergebnis nicht beeinflussen, überspringen kann.
- Optimierung von Abfragen, die GROUP BY e1 ORDER BY e2 verwenden, wobei e1 und e2 identisch sind, mit Ausnahme der Sortierreihenfolge ASC/DESC, unter Verwendung eines Index.
- Optimierung des DISTINCT-Befehls in virtuellen Tabellen, wenn die Ergebnismenge der Abfrage nicht vollständig mit den ORDER BY-Bedingungen übereinstimmt.
- Im Erweiterung der Sitzung neue Schnittstellen hinzugefügt, die es der Anwendung ermöglichen, Änderungen einzeln im Objekt sqlite3_changegroup hinzuzufügen:
- Verbesserungen bei der Umwandlung von Fließkommazahlen ↔ Text.
- Der Code wurde vollständig neu geschrieben, um die Leistung zu verbessern.
- Die Rundung erfolgt jetzt standardmäßig auf 17 signifikante Ziffern anstelle von 15, wie es in allen vorherigen Versionen der Fall war. Falls erforderlich, kann dieser Wert mit der Funktion sqlite3_db_config mit der Option SQLITE_DBCONFIG_FP_DIGITS (siehe Punkt 6g oben).
- Eine Funktion wurde hinzugefügt Selbstwiederherstellung des Indexes um das Problem zu lösen. veralteter Ausdrucksindizes.
- In das Konsolenwerkzeug sqlite3_rsync wurde die Option -p|—port hinzugefügt.
- Der Support für Windows RT.
- JavaScript/WASM
- Wurde VFS opfs-wl hinzugefügt, das funktional identisch mit opfs ist, aber für Sperren Web Locks verwendet, was eine gerechtere Verteilung der Sperren als im opfs-Protokoll ermöglicht. opfs-wl erfordert die Funktion Atomics.waitAsync(), daher sind neuere Versionen der Browser erforderlich als für opfs.
Quelle: linux.org.ru
