Byla vydána verze SQLite 3.40, lehkého databázového systému jako připojitelné knihovny. Kód SQLite je šířen jako veřejné vlastnictví (public domain), tedy může být používán bez omezení a bezplatně pro jakékoli účely. Finanční podporu vývojářům SQLite zajišťuje speciálně založený konzorcium, do kterého patří společnosti jako Adobe, Oracle, Mozilla, Bentley a Bloomberg.
Hlavní změny:
- Byla implementována experimentální možnost kompilace SQLite do mezikódu WebAssembly, který je schopen běžet v webovém prohlížeči a je vhodný pro uskutečňování práce s databázemi z webových aplikací v jazyce JavaScript. Webovým vývojářům je k dispozici vysoceúrovní objektově orientované rozhraní pro práci s daty ve stylu sql.js nebo Node.js, obal nad nízkoúrovňovým C API a API na základě mechanismu Web Worker, který umožňuje vytvářet asynchronní zpracovatele, vykonávané v samostatných vláknech. Data, která webové aplikace ukládají v WASM verzi SQLite, mohou být uchovávána na straně klienta pomocí OPFS (Origin-Private FileSystem) nebo API window.localStorage.
- Bylo přidáno rozšíření recovery, určené pro obnovu dat z poškozených souborů s databázemi. V rozhraní příkazového řádku se pro obnovu používá příkaz „.recover“.
- Bylo vylepšeno fungování plánovače dotazů. Byla odstraněna omezení při používání indexů s tabulkami, které mají více než 63 sloupců (dříve při operacích se sloupci, jejichž pořadové číslo přesahovalo 63, se indexace neuplatňovala). Byla zlepšena indexace hodnot používaných ve výrazech. Bylo zastaveno načítání velkých řetězců a blobů z disku při zpracování operátorů NOT NULL a IS NULL. Byla vyloučena materializace pohledů, pro které se plné skenování provádí pouze jednou.
- V kódové základně byl místo typu „char *“ pro reprezentaci názvů souborů zaveden samostatný typ sqlite3_filename.
- Byla přidána vnitřní funkce sqlite3_value_encoding().
- Byl přidán režim SQLITE_DBCONFIG_DEFENSIVE, který zakazuje změnu verze schéma uložení dat.
- Do implementace parametru „PRAGMA integrity_check“ byly přidány další kontroly. Například tabulky bez příznaku STRICT by neměly obsahovat číselné hodnoty ve sloupcích s typem TEXT a řetězcové hodnoty s čísly ve sloupcích s typem NUMERIC. Také byla přidána kontrola správnosti pořadí řádků v tabulkách s příznakem „WITHOUT ROWID“.
- V výrazu „VACUUM INTO“ byly zohledněny nastavení „PRAGMA synchronous“.
- Byla přidána konfigurační možnost SQLITE_MAX_ALLOCATION_SIZE, která umožňuje omezit velikost bloků při alokaci paměti.
- Vestavěný algoritmus generování pseudonáhodných čísel v SQLite byl převeden z použití proudového šifrování RC4 na Chacha20.
- Bylo povoleno používání indexů se stejnými názvy v různých schématech dat.
- Byly provedeny optimalizace výkonu, které umožnily snížit zátěž CPU o přibližně 1 % při běžné činnosti.
Zdroj: opennet.ru
