Opublikowano wersję SQLite 3.40, lekkiej bazy danych, która jest dostarczana jako biblioteka do zainstalowania. Kod SQLite jest rozpowszechniany na zasadzie public domain, co oznacza, że może być używany bez ograniczeń i bezpłatnie w dowolnych celach. Finansowe wsparcie dla programistów SQLite zapewnia specjalnie utworzony konsorcjum, do którego należą takie firmy jak Adobe, Oracle, Mozilla, Bentley i Bloomberg.
Główne zmiany:
- Zrealizowano eksperymentalną funkcję kompilacji SQLite do pośredniego kodu WebAssembly, zdolnego do uruchamiania w przeglądarkach internetowych i odpowiedniego do zarządzania bazą danych z aplikacji webowych w języku JavaScript. Web-deweloperzy otrzymują wyspecjalizowany obiektowy interfejs do pracy z danymi w stylu sql.js lub Node.js, opakowanie nad niskopoziomowym C API oraz API oparte na mechanizmie Web Worker, który pozwala na tworzenie asynchronicznych handlerów wykonywanych w oddzielnych wątkach. Dane, które aplikacje webowe przechowują w wersji WASM SQLite, mogą być zapisane po stronie klienta za pomocą OPFS (Origin-Private FileSystem) lub API window.localStorage.
- Dodano rozszerzenie recovery, przeznaczone do odzyskiwania danych z uszkodzonych plików bazy danych. W interfejsie wiersza poleceń do przywracania danych używana jest komenda „.recover”.
- Udoskonalono działanie planisty zapytań. Usunięto ograniczenia przy używaniu indeksów z tabelami mającymi więcej niż 63 kolumny (wcześniej podczas operacji na kolumnach, których numer przekraczał 63, indeksowanie nie było stosowane). Ulepszono indeksowanie wartości używanych w wyrażeniach. Zaniechano ładowania z dysku dużych wierszy i blobów podczas przetwarzania operatorów NOT NULL i IS NULL. Wyeliminowano materializację widoków, dla których pełne skanowanie odbywa się tylko raz.
- W bazie kodowej zamiast typu „char *” do reprezentowania nazw plików wprowadzono osobny typ sqlite3_filename.
- Dodano wewnętrzną funkcję sqlite3_value_encoding().
- Dodano tryb SQLITE_DBCONFIG_DEFENSIVE, zabraniający zmiany wersji schematu przechowywania danych.
- Do realizacji parametru „PRAGMA integrity_check” dodano dodatkowe kontrole. Na przykład, w tabelach bez oznaczenia STRICT nie mogą znajdować się wartości numeryczne w kolumnach typu TEXT oraz wartości tekstowe w kolumnach typu NUMERIC. Dodano również kontrolę poprawności kolejności wierszy w tabelach z oznaczeniem „WITHOUT ROWID”.
- W wyrażeniu „VACUUM INTO” uwzględniono ustawienia „PRAGMA synchronous”.
- Dodano opcję kompilacji SQLITE_MAX_ALLOCATION_SIZE, która pozwala ograniczyć rozmiar bloków przy alokacji pamięci.
- Wbudowany w SQLite algorytm generowania liczb pseudolosowych został przetłumaczony z użycia szyfru strumieniowego RC4 na Chacha20.
- Zezwolono na użycie w różnych schematach danych indeksów o tych samych nazwach.
- Wprowadzono optymalizacje wydajności, które pozwoliły zmniejszyć obciążenie CPU o około 1% przy typowej aktywności.
Źródło: opennet.ru
