Публикувано е издание SQLite 3.40, леко програмирано управление бази данни, представено под формата на свързана библиотека. Кодът на SQLite се разпространява като обществено достояние, т.е. може да се използва без ограничения и безвъзмездно за всякакви цели. Финансова подкрепа на разработчиците на SQLite предоставя специално създаден консорциум, в който влизат компании като Adobe, Oracle, Mozilla, Bentley и Bloomberg.
Основни промени:
- Реализирана е експериментална възможност за компилиране на SQLite в междинен код WebAssembly, способен да се изпълнява в уеб браузър и подходящ за организиране на работа с бази данни от уеб приложения на JavaScript. Уеб разработчиците получават високоефективен обектно-ориентиран интерфейс за работа с данни в стил sql.js или Node.js, обвивка над нискоуровневото C API и API, основано на механизма Web Worker, което позволява създаването на асинхронни обработчици, които се изпълняват в отделни нишки. Данните, които уеб приложенията запазват в WASM версията на SQLite, могат да бъдат запазени на страната на клиента с помощта на OPFS (Origin-Private FileSystem) или API window.localStorage.
- Добавено е разширение recovery, предназначено за възстановяване на данни от повредени файлове с бази данни. В интерфейса на командния ред за възстановяване се използва команда „.recover”.
- Подобрена е работата на планиращия запроси. Премахнати са ограниченията при използването на индекси с таблици, съдържащи повече от 63 колони (по-рано при операции с колони, чийто порядков номер надвишава 63, индексирането не се прилагаше). Подобрено е индексирането на стойности, използвани в изрази. Прекратено е зареждането от диска на големи редове и блобове при обработка на оператори NOT NULL и IS NULL. Изключена е материализацията на представления, за които пълното сканиране се изпълнява само веднъж.
- В кодовата база вместо типа „char *“ за представяне на имена на файлове е активиран отделен тип sqlite3_filename.
- Добавена е вградена функция sqlite3_value_encoding().
- Добавен е режим SQLITE_DBCONFIG_DEFENSIVE, забраняващ промяна на версията на схемата за съхранение на данни.
- В параметъра «PRAGMA integrity_check» са добавени допълнителни проверки. Например, таблици без признак STRICT не трябва да съдържат числови стойности в колони с тип TEXT и стрингови стойности с числа в колони с тип NUMERIC. Също така е добавена проверка за правилността на реда на редовете в таблици с признак «WITHOUT ROWID».
- В израза «VACUUM INTO» са взети под внимание настройките «PRAGMA synchronous».
- Добавена е опцията SQLITE_MAX_ALLOCATION_SIZE, позволяваща ограничаване на размера на блоковете при разпределение на паметта.
- Вградените в SQLite алгоритми за генериране на псевдослучайни числа са преминали от използването на потоков шифър RC4 към Chacha20.
- Разрешено е използването на индекси с едно и също име в различни схеми данни.
- Извършени са оптимизации на производителността, които намаляват натоварването на CPU с приблизително 1% при типична активност.
Източник: opennet.ru
