Випуск СУБД SQLite 3.40

Опубліковано реліз SQLite 3.40, легковагої СУБД, оформленої у вигляді бібліотеки, що підключається. Код SQLite поширюється як суспільне багатство (public domain), тобто. може використовуватися без обмежень та безоплатно в будь-яких цілях. Фінансову підтримку розробників SQLite здійснює спеціально створений консорціум, до якого входять такі компанії, як Adobe, Oracle, Mozilla, Bentley та Bloomberg.

Основні зміни:

  • Реалізовано експериментальну можливість компіляції SQLite у проміжний код WebAssembly, здатний запускатися у web-браузері та придатний для організації роботи з БД із web-додатків мовою JavaScript. Web-розробникам надається високорівневий об'єктно-орієнтований інтерфейс для роботи з даними в стилі 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

Додати коментар або відгук