Opublikowano wydanie SQLite 3.53, lekkiej bazy danych, dostępnej jako biblioteka do podłączania. Wydanie 3.52 zostało anulowane. Kod SQLite jest dostępny w domenie publicznej, co oznacza, że może być używany bez ograniczeń i bezpłatnie w dowolnych celach. Wsparcie finansowe dla twórców SQLite świadczy specjalnie utworzony konsorcjum.
Główne zmiany:
- Usunięto błąd, który prowadził do uszkodzenia bazy danych. Problem występował od wersji SQLite 3.7.0 (2010 rok) i dotyczył baz danych w trybie WAL (Write-Ahead Logging), objawiając się w wyniku wyścigu w przypadku jednoczesnego otwierania dwóch lub więcej połączeń do bazy danych, które próbowały zapisać lub zatwierdzić transakcje w jednej instancji bazy danych. Twierdzi się, że sytuacja prowadząca do awarii występuje niezwykle rzadko i udało się ją powtórzyć tylko w specjalnie stworzonym scenariuszu testowym.
- W zespole „ALTER TABLE” dozwolone jest usuwanie ograniczeń „NOT NULL” oraz „CHECK”.
- Dodano polecenie „REINDEX EXPRESSIONS” do odbudowy indeksów na podstawie wyrażeń, w których jako element indeksu używana jest funkcja nad kolumną lub operacje nad kolumnami. Komenda może być stosowana do przywracania uszkodzonych indeksów.
- W tymczasowych wyzwalaczach tworzonych przez polecenie „CREATE TEMP TRIGGER” oraz stosowanych na tabelach w innych bazach danych dozwolone jest zmienianie tabel lub zapytania danych z tabel.
- W poleceniu „VACUUM INTO” przy wskazywaniu docelowego pliku za pomocą URL wprowadzono użycie parametru „reserve=N” do określenia liczby tworzonych kopii zapasowych bazy danych.
- Zrealizowano nowe funkcje SQL json_array_insert() oraz jsonb_array_insert() do wstawiania elementów do tablic JSON.
- Dodano i uruchomiono w narzędziu wiersza poleceń bibliotekę QRF (Query Result Formatter) do formatowania wyników wykonania zapytań SQL w czytelnej formie.
- Zmiany w narzędziu wiersza poleceń:
- Polecenie „.mode” zostało znacznie rozszerzone.
- Udoskonalono generowanie wyników, na przykład domyślnie włączono rysowanie ramek, a wartości numeryczne są teraz wyrównywane do prawej krawędzi przy tabulowanym wyjściu.
- Zapewniono ignorowanie znaków „;” po poleceniach.
- Zawartość określonych wierszy plików z rozszerzeniem *.sql i *.txt podanych w wierszu poleceń jest teraz odczytywana i interpretowana jako zestawy wyrażeń SQL oraz poleceń dot.
- W poleceniu „.timer” dodano wsparcie dla wartości „once” do zastosowania timera tylko do następnego wyrażenia SQL.
- W poleceniu „.progress” dodano opcję „—timeout S” do wymuszenia przerwania wyrażenia SQL po upływie limitu czasu.
- W poleceniu „.indexes” zmieniono zachowanie szablonów, które teraz są stosowane do nazw indeksów, a nie do nazw tabel indeksowanych.
- Wprowadzono optymalizacje w planowaniu zapytań, które przyspieszyły operacje łączenia tabel oraz operacje EXCEPT, INTERSECT i UNION.
- Zwiększono wydajność funkcji konwersji liczb zmiennoprzecinkowych na reprezentację tekstową.
- Do realizacji kompilowanej do pośredniego kodu WebAssembly dodano VFS „opfs-wl”, tożsame z VFS „opfs”, ale wykorzystujące API Web Locks do obsługi blokad.
- Do narzędzia sqlite3_rsync dodano opcję „-p|—port”.
- Wsparcie dla platformy Windows RT zostało zakończone.
Źródło: opennet.ru
