Публикувана е версия SQLite 3.45, лека СУБД, реализирана като библиотека за включване. Кодът на SQLite се разпространява като обществено достояние, т.е. може да се използва без ограничения и безплатно за всякакви цели. Финансовата подкрепа за разработчиците на SQLite идва от специално създаден консорциум, в който влизат компании като Bentley, Bloomberg, Expensify и Navigation Data Standard.
Основни промени:
- Всички SQL функции за работа с формата JSON са пренаписани и преведени на новия вътрешен формат на анализа JSONB, който се сериализира и може да се съхранява в БД, за да се избегне повторното анализиране при използване на стойности JSON. Новите версии на функциите, генериращи JSON, сега генерират бинарен формат JSONB вместо текстов. В функцията json_valid() е добавен необязателен втори аргумент, чрез който може да се зададе битова маска, определяща признаците на валиден JSON (например, при задаване на 0x04, валиден ще бъде признат блоб JSONB, при задаване на 0x01 текстов JSON в формат RFC-8259, а при задаване на 0x05 и двата варианта).
- Във виртуалната таблица FTS5, използвана за пълнотекстово търсене, е добавена опция tokendata, позволяваща използването на собствени токенизатори.
- По подразбиране е активирана оптимизация SQLITE_DIRECT_OVERFLOW_READ, при която overflow-страниците, размерът на които е по-голям от стандартния размер на страницата b-tree, се четат директно от файла, заобикаляйки кеша. За деактивиране при събиране може да се използва опцията "-DSQLITE_DIRECT_OVERFLOW_READ=0".
- В планировчика на заявки е увеличена ефективността на оптимизацията на транзитивните ограничения и е подобрено игнорирането на индекси, които се считат за нискокачествени при изпълнение на операция ANALYZE.
- В интерфейса на командния ред е подобрено показването на съдържанието с кодировка UTF-8 на платформата Windows. Осигурено е автоматично разпознаване на използването на CLI интерфейса при изпълнение на скриптове "dump" и прилагане на съответните промени в настройките, като "dbconfig defensive off" и "dbconfig dqs_dll on".
- В определените на страната на приложението SQL функции е добавено свойството SQLITE_RESULT_SUBTYPE, което разрешава извикването на sqlite3_result_subtype() за инспектиране на подтиповете на аргументите.
Допълнително може да се отбележи развитието в експерименталните сборки на SQLite на нов режим на водене на журнал на транзакции — WAL2 («PRAGMA journal_mode = wal2»), при който се използват два wal-файла ( «database-wal» и «database-wal2») вместо един. При запис на данни в БД, новите данни се добавят в първия wal-файл. Ако първият wal-файл достигне достатъчно голям размер, се преминава на запис във втория файл. След преминаването на втория wal-файл, първият става достъпен за фиксиране на изменения (checkpoint) и презапис. Следователно, когато вторият wal-файл достигне голям размер, се преминава на първия и т.н., което решава проблема с неконтролируемото нарастване на wal-файла в ситуации, когато дълго време не се фиксира транзакция или се извършват дълги процеси на четене.
Източник: opennet.ru
