Powrót do strony głównej

SQLite 3.53: poprawka WAL i nowe funkcje

SQLite 3.53 naprawia krytyczny błąd uszkodzenia bazy danych w trybie WAL przy równoległych połączeniach. Dodano REINDEX EXPRESSIONS, json_array_insert i ulepszenia CLI z QRF. Zoptymalizowano zapytania UNION/EXCEPT i konwersje float.

SQLite 3.53 wyszła: WAL-błąd naprawiony, JSON ulepszony
Advertisement 728x90

# 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.

Google AdInline article slot

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.

Google AdInline article slot

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.

Google AdInline article slot

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:

  • .mode rozszerzone 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.
  • .indexes stosuje 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

Advertisement 728x90

Czytaj dalej