Die Veröffentlichung von SQLite 3.46, einer schlanken DBMS, die als dynamische Bibliothek bereitgestellt wird, wurde bekannt gegeben. Der SQLite-Code wird als Public Domain verbreitet, d.h. er kann ohne Einschränkungen und kostenlos für alle Zwecke verwendet werden. Die finanzielle Unterstützung der SQLite-Entwickler erfolgt durch ein eigens gegründetes Konsortium.
Hauptänderungen:
- Es wurde die Möglichkeit eingeführt, den Trennzeichen «_» in Zahlen zu verwenden, um eine anschaulichere Darstellung von Zahlenliteralen zu ermöglichen (z.B. 1_234_567).
- Die SQL-Funktion json_pretty() wurde hinzugefügt, um eine lesbarere Ausgabe im JSON-Format zu erzeugen, die mit Blockeinzügen formatiert ist.
- Die Funktion der Anweisung «PRAGMA optimize» wurde erweitert, um Datenbanken und alle Datenschemata zu optimieren und die beste Abfrageleistung zu erreichen. Eine automatisch angewandte Grenze für die Analysezeit der Datenbank wurde eingeführt, um eine zu lange Bearbeitungszeit bei großen Datenbanken auszuschließen. Eine neue Bitmaske «PRAGMA optimize(0x10000)» wurde hinzugefügt, um Updates in allen Tabellen separat zu überprüfen. Eine automatische Wiederanalyse von Tabellen, in denen keine Einträge in sqlite_stat1 vorhanden sind, wurde gewährleistet.
- Die SQL-Funktion strftime() unterstützt jetzt die Platzhalter %G, %g, %U und %V.
- In den SQL-Funktionen zur Arbeit mit Datum und Uhrzeit wurden neue Modifikatoren ceiling und floor hinzugefügt, um die Verarbeitung von mehrdeutigen Daten zu steuern, die bei Datumsschiebungen um eine bestimmte Anzahl von Monaten oder Jahren auftreten. Die Modifikatoren utc und localtime werden ignoriert, wenn SQLite Informationen hat, dass die Zeit bereits im UTC- oder localtime-Format vorliegt.
- Es wurden Optimierungen im Abfrageplaner vorgenommen. Für INSERT-Ausdrücke, die Tausende von Werten im VALUES-Bereich enthalten, ist standardmäßig die Optimierung «VALUES-as-coroutine» aktiviert, die die Analyse solcher Ausdrücke etwa um das Zweifache beschleunigt und den Speicherbedarf um die Hälfte reduziert. Für Anfragen wie «SELECT count(DISTINCT col) FROM …» ist die Verwendung von Indizes erlaubt, selbst wenn die Größe der Aufzeichnungen im Index nicht kleiner ist als die in der Tabelle. Die Logik zur Bestimmung von Situationen, in denen in den Argumenten von SQL-Funktionen Konstanten angegeben werden, wurde verbessert. Die push-down-Optimierung für WHERE-Ausdrücke mit nicht zusammenhängenden Unterabfragen wurde gewährleistet.
- Die Logik zur Verarbeitung von Stapelüberläufen wurde geändert – wenn ein Speichermangel für den Stapel festgestellt wird, versucht der Parser nun, zusätzlichen Speicher aus dem Heap zu reservieren, anstatt den Fehler "parser stack overflow" auszugeben.
- In JSON ist die Verwendung von Steuerzeichen in String-Literalen in JSON5 erlaubt. Die Logik der Operatoren "->" und "->>" wurde geändert, wenn im rechten Teil der String-Operand nur Ziffern enthalten sind (analog zu PostgreSQL werden solche Operanden nun als String behandelt).
- Im DEFAULT-Wert in Tabellenspalten ist die Angabe großer hexadezimaler Literale erlaubt.
Quelle: opennet.ru
