SQLite 3.50.0: нова версія компактної вбудованої СУБД

SQLite 3.50.0: нова версія компактної вбудованої СУБД

29 травня відбувся випуск SQLite 3.50.0 – компактної вбудованої СУБД, написаної мовою C і поширюваної як суспільне надбання. Нова версія SQLite включає низку важливих змін та покращень, що розширюють функціональність цієї популярної бази даних.

Основні зміни у SQLite 3.50.0

Розробники SQLite представили кілька ключових нововведень та виправлень у цьому релізі:

  • Додано функцію sqlite3_setlk_timeout(), що встановлює окремий таймаут, відмінний від sqlite3_busy_timeout().
  • Обмеження SQLITE_DBCONFIG_ENABLE_COMMENTS дещо послаблено, тож коментарі завжди дозволені при читанні схеми з існуючої таблиці sqlite_schema. Коментарі блокуються лише в новому SQL.
  • Додано вбудовані SQL-функції unistr() та unistr_quote().
  • У перетвореннях %Q та %q у вбудованій функції printf() прапор альтернативної форми # перетворює керуючі символи в беквари-ескейпи, придатні для unistr().

Покращення в консольній утиліті та взаємодії з базою даних

SQLite 3.50.0 також містить низку покращень щодо роботи з даними:

  • У консольній утиліті заборонено прямий вивід більшості керуючих символів.
  • У виводі команди .dump використовується нова SQL-функція unistr() для кодування спеціальних символів (якщо не вимкнено режим --escape).
  • Покращено форматування складних часткових індексів у виводі команди .schema --indent.
  • Вдосконалено утиліту синхронізації БД sqlite3_rsync.

Виправлення помилок та оптимізації в SQLite

Крім того, у новій версії SQLite вирішено кілька важливих проблем:

  • Забезпечено дотримання обмеження JSON5, згідно з яким за символом \0 не повинна слідувати цифра.
  • Виправлено помилку в функції json_group_object(LABEL,VALUE).
  • Оптимізовано функції jsonb_set() та jsonb_replace().
  • Покращено підтримку збирання в Cygwin, MinGW та подібних системах, а також у Termux.
  • Виправлено друкарські помилки в документації та коментарях до вихідного коду.
  • Внесено різні покращення продуктивності.

Зміни для JavaScript/WASM

Важливим є виправлення давньої помилки в JavaScript/WASM: виправлено розрахунок контрольної суми імені файлу в VFS OPFS SAHPool. Через це бази даних, створені в цій VFS у версії 3.50.0+, не можуть бути прочитані старішими версіями VFS. Однак SQLite 3.50.0 залишається зворотньо сумісною з існуючими базами даних, створеними в старіших версіях.

Нова версія SQLite 3.50.0 – це значне оновлення, яке розширює функціональні можливості цієї компактної бази даних та робить її ще більш потужною для розробників. Детальніше про всі зміни можна дізнатися на офіційному сайті SQLite або в офіційному журналі випуску.