Публикувана е версия 3.40 на SQLite, лека СУБД, оформена като свързваща библиотека. Кодът на 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
