# SQLite 3.53: kluczowe poprawki błędów i nowe funkcje SQL
Ukazała się wersja SQLite 3.53 — kompaktowa osadzana SGBD napisana w C, znajdująca się w domenie publicznej. Biblioteka idealnie nadaje się do integracji w aplikacjach bez żadnych ograniczeń licencyjnych. Poprzedni release 3.51 pochodzi z listopada 2025 roku, wersja 3.52 została anulowana. Konsorcjum zapewnia finansowanie rozwoju.
Ta wersja skupia się na stabilności trybu WAL, rozszerzeniu ALTER TABLE oraz narzędziach dla JSON. Optymalizacje zapytań poprawiają wydajność łączenia tabel i operacji UNION/INTERSECT/EXCEPT.
Krytyczna poprawka uszkodzenia bazy danych w WAL
Usunięto błąd powodujący uszkodzenie bazy danych w trybie Write-Ahead Logging. Problem istniał od 2010 roku (SQLite 3.7.0) i ujawniał się w warunkach wyścigu stanów: wiele połączeń jednocześnie otwiera bazę danych i próbuje zapisać/zatwierdzić transakcje do jednego pliku. Awaria była rzadka i występowała tylko w scenariuszu testowym.
Ta poprawka jest krytyczna dla wielowątkowych aplikacji z WAL, gdzie równoległy dostęp jest normą. Deweloperzy średniego i senior poziomu docenią usunięcie ukrytej luki bez regresji.
Rozszerzenia DDL: ALTER TABLE i REINDEX EXPRESSIONS
Polecenie ALTER TABLE teraz obsługuje usuwanie ograniczeń NOT NULL i CHECK. Przydatne przy ewolucji schematu bez pełnej przebudowy tabel.
Nowe polecenie REINDEX EXPRESSIONS odbudowuje indeksy na wyrażeniach (funkcje nad kolumnami lub operacje). Stosowane do przywracania przestarzałych indeksów po zmianach danych.
Przykład scenariusza:
- Indeks na UPPER(column) degraduje się przy aktualizacjach.
- REINDEX EXPRESSIONS(name) przywraca spójność.
Tymczasowe triggery (CREATE TEMP TRIGGER) na tabelach z innych baz danych mogą teraz modyfikować tabele lub czytać dane.
Funkcje JSON i ulepszenia VACUUM
Dodano json_array_insert() i jsonb_array_insert() do wstawiania elementów do tablic JSON z zachowaniem kolejności i typów.
VACUUM INTO z celem URL obsługuje reserve=N — określa liczbę kopii zapasowych bazy danych.
Lista nowych funkcji JSON:
- json_array_insert(json, path, value): wstawianie po ścieżce.
- jsonb_array_insert(jsonb, path, value): wariant binarny dla wydajności.
- Obsługa wstawiania pozycyjnego i nazwanego.
Ulepszenia narzędzia CLI sqlite3
Biblioteka QRF (Query Result Formatter) została zintegrowana dla czytelnego wyświetlania wyników zapytań.
Zmiany w poleceniach:
.moderozszerzone o nowe formaty (tabele z ramkami domyślnie).- Liczby wyrównane do prawej w wyjściu tabelarycznym.
- Ignorowanie
;po poleceniach kropkowych. - Pliki .sql/.txt z linii poleceń wykonywane jako SQL + polecenia kropkowe.
.timer once— pomiar czasu tylko następnego zapytania..progress -timeout S— przerwanie po timeout..indexesstosuje wzorce do nazw indeksów, a nie tabel.
Te funkcje przyspieszają debugowanie i analizę w terminalu.
Optymalizacje i zmiany platformowe
Planista zapytań zoptymalizowany dla łączenia tabel i EXCEPT/INTERSECT/UNION — wzrost wydajności na dużych zbiorach danych.
Przyspieszono konwersję float na tekst (operacje podobne do sprintf).
Kompilacja WebAssembly: nowa VFS opfs-wl używa Web Locks API do blokad, podobnie jak opfs.
sqlite3_rsync: opcja -p/--port dla rsync sieciowego.
Zakończono wsparcie dla Windows RT.
Wydajność float-to-text wzrosła dzięki wektoryzacji w gorących ścieżkach.
Co ważne
- Naprawiono rzadką, ale fatalną wyścig w WAL z dostępem multi-connection.
- ALTER TABLE usuwa NOT NULL/CHECK; REINDEX EXPRESS dla indeksów opartych na wyrażeniach.
- json_array_insert() i CLI z QRF dla JSON/debugowania.
- Optymalizacje UNION/EXCEPT i formatowania float.
- WebAssembly: VFS opfs-wl z Web Locks.
— Editorial Team
Brak komentarzy.