Opublikowano wydanie SQLite 3.51, lekkiej bazy danych, która jest dostępna jako biblioteka do podłączenia. Kod SQLite jest dystrybuowany jako własność publiczna (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.
Główne zmiany:
- Dodano nowe funkcje JSON jsonb_each() i jsonb_tree(), które różnią się od wcześniej dostępnych funkcji json_each() i json_tree() tym, że zwracają wartość JSONB dla danych typu tablica lub obiekt.
- Kod rozszerzeń carray i percentile został przeniesiony do podstawowego pliku 'sqlite3.c' z osadzonym kodem SQLite. Domyślnie te dane są wyłączone i wymagają określenia przy kompilacji parametru '-DSQLITE_ENABLE_CARRAY' i '-DSQLITE_ENABLE_PERCENTILE'.
- Udoskonalono interfejs do używania SQLite w skryptach Tcl. Do polecenia 'eval' dodano flagę '-asdict', aby ustawić ciągi znaków z użyciem typu 'dict' zamiast 'array'. Dodano możliwość przerywania funkcji użytkowników w celu zwrócenia wartości NULL.
- Zmiany w interfejsie wiersza poleceń:
- Dokładność polecenia '.timer' zwiększona do mikrosekund;
- W trybach formatowania 'box' i 'column' wdrożono wsparcie dla symboli o podwójnej szerokości;
- Polecenie '.imposter' może teraz udostępniać w trybie tylko do odczytu tabele imposter (pozwalają uzyskać dostęp do danych w indeksie jak do tabeli), działające z operacją VACUUM i nie wymagające uruchomienia z flagą '--unsafe-testing';
- Do narzędzia sqlite i polecenia '.open' dodano opcję '--ifexists'.
- Maksymalna szerokość wiersza ustawiana za pomocą polecenia '.width' jest ograniczona do 30000 znaków.
- Wprowadzone optymalizacje wydajności:
- Zmniejszono obciążenie CPU przy zatwierdzaniu transakcji, ograniczonych dostępem do odczytu;
- Udoskonalono określenie operacji złączenia (JOIN), które nie zwracają wierszy z powodu braku wierszy w jednej lub kilku tabelach;
- Wykluczono wykonywanie skalarnych podzapytań, które nie wpływają na wynik;
- Przyspieszono działanie funkcji okiennych w zapytaniach z wyrażeniem 'BETWEEN 😡 FOLLOWING AND :y FOLLOWING' oraz bardzo dużą wartością ':y'.
- Dodano pragma 'PRAGMA wal_checkpoint=NOOP' oraz funkcję API sqlite3_wal_checkpoint() do rejestrowania zmian w dzienniku WAL.
- Do API dodano funkcje sqlite3_set_errmsg() i sqlite3_db_status64().
- W wersji SQLite dla JavaScript/WASM wprowadzono wsparcie dla kompilacji do widoku WebAssembly z 64-bitowymi wskaźnikami.
- Zwiększona odporność na uszkodzenia bazy danych w aplikacjach korzystających z blokad POSIX przez wywołanie close().
- Poprawiona obsługa platformy VxWorks.
Źródło: opennet.ru
