Zpět na domů

SQLite 3.53: oprava WAL a nové funkce

SQLite 3.53 opravuje kritickou chybu poškození databáze v WAL režimu při paralelních připojeních. Přidány REINDEX EXPRESSIONS, json_array_insert a vylepšení CLI s QRF. Optimalizovány dotazy UNION/EXCEPT a float-převody.

SQLite 3.53 vyšlo: WAL-bug opraven, JSON vylepšen
Advertisement 728x90

# SQLite 3.53: klíčové opravy chyb a nové SQL funkce

Vyšla verze SQLite 3.53 — kompaktní vestavitelné databázové jádro napsané v C v public domain. Knihovna je vhodná pro integraci do aplikací bez licenčních omezení. Předchozí vydání 3.51 pochází z listopadu 2025, verze 3.52 byla zrušena. Konzorcium zajišťuje financování vývoje.

Tato verze se zaměřuje na stabilitu WAL režimu, rozšíření ALTER TABLE a nástrojů pro JSON. Optimalizace dotazů zvyšují výkon slučování tabulek a operací UNION/INTERSECT/EXCEPT.

Kritická oprava poškození databáze v WAL

Byla opravena chyba, která vedla k poškození databáze v režimu Write-Ahead Logging. Problém existoval od roku 2010 (SQLite 3.7.0) a projevoval se při závodní podmínce: několik připojení současně otevře databázi a pokusí se zapsat/komitovat transakce do jednoho souboru. Selhání se reprodukovalo zřídka, pouze v testovacím scénáři.

Google AdInline article slot

Tato oprava je kritická pro vícevláknové aplikace s WAL, kde je paralelní přístup standardem. Vývojáři střední a vyšší úrovně ocení odstranění skryté zranitelnosti bez regrese.

Rozšíření DDL: ALTER TABLE a REINDEX EXPRESSIONS

Příkaz ALTER TABLE nyní podporuje odstranění omezení NOT NULL a CHECK. Užitečné při evoluci schématu bez úplné přestavby tabulek.

Nový příkaz REINDEX EXPRESSIONS přestavuje indexy na výrazech (funkce nad sloupci nebo operace). Používá se k obnovení zastaralých indexů po změnách dat.

Google AdInline article slot

Příklad scénáře:

  • Index na UPPER(column) degraduje při aktualizacích.
  • REINDEX EXPRESSIONS(name) obnoví integritu.

Dočasné triggery (CREATE TEMP TRIGGER) na tabulkách z jiných databází nyní mohou modifikovat tabulky nebo číst data.

JSON funkce a vylepšení VACUUM

Byly přidány json_array_insert() a jsonb_array_insert() pro vkládání prvků do JSON polí s zachováním pořadí a typů.

Google AdInline article slot

VACUUM INTO s URL cílem podporuje reserve=N — určuje počet záložních kopií databáze.

Seznam nových možností JSON:

  • json_array_insert(json, path, value): vkládání podle cesty.
  • jsonb_array_insert(jsonb, path, value): binární varianta pro výkon.
  • Podpora pozičního a pojmenovaného vkládání.

Vylepšení CLI nástroje sqlite3

Knihovna QRF (Query Result Formatter) je integrována pro čitelný výstup výsledků dotazů.

Změny v příkazech:

  • .mode rozšířena o nové formáty (tabulky s rámečky jako výchozí).
  • Čísla se zarovnávají doprava v tabulkovém výstupu.
  • Ignorování ; po dot-příkazech.
  • Soubory .sql/.txt z příkazové řádky se spouštějí jako SQL + dot-příkazy.
  • .timer once — měření času pouze pro následující dotaz.
  • .progress -timeout S — přerušení podle timeoutu.
  • .indexes aplikuje vzory na názvy indexů, ne tabulek.

Tyto funkce urychlují ladění a analýzu v terminálu.

Optimalizace a změny pro platformy

Plánovač dotazů je optimalizován pro slučování tabulek a EXCEPT/INTERSECT/UNION — růst výkonu na velkých datových sadách.

Zrychleno převádění float na text (operace podobné sprintf).

WebAssembly sestavení: nový VFS opfs-wl používá Web Locks API pro blokování, podobně jako opfs.

sqlite3_rsync: volba -p/--port pro síťový rsync.

Ukončena podpora Windows RT.

Výkon float-to-text vzrostl díky vektorizaci v horkých cestách.

Co je důležité

  • Opravena vzácná, ale fatální závodní podmínka v WAL s vícepřipojení přístupem.
  • ALTER TABLE odstraňuje NOT NULL/CHECK; REINDEX EXPRESS pro indexy založené na výrazech.
  • json_array_insert() a CLI s QRF pro JSON/ladění.
  • Optimalizace UNION/EXCEPT a formátování floatů.
  • WebAssembly: opfs-wl VFS s Web Locks.

— Editorial Team

Advertisement 728x90

Číst dál