SQLite 3.53.0

SQLite 3.53.0 SQLite 3.53.0

На 9 април беше пусната версия 3.53.0 на компактната кроссплатформена вградена СУБД SQLite. Проектният код е написан на C и се разпространява като обществено достояние (public domain).

Промени:

  • Коригирана е грешка Буг за корупция на базата данни с WAL-рестарт. Виж предишната новина SQLite 3.51.3 с поправка на възможно повреждане на базата данни в режим WAL.
  • Добавена е библиотека за форматиране на резултатите от SQL заявки Форматираща библиотека за резултати от заявки (QRF) за осигуряване на удобочетене на екрана с моноширинни шрифтове.
  • Добавен е метод format к интерфейса TCL за достъп до QRF от TCL.
    • QRF вече се използва в конзолната утилита sqlite за форматиране на резултатите от заявки, което подобрява тяхното представяне.
  • Нови възможности на SQL езика:
    • Подобрени са възможностите на командата ALTER TABLE за предоставяне на възможност за добавяне и премахване на ограничения NOT NULL и CHECK.
    • Оператор REINDEX EXPRESSIONS извършва реиндексиране на индексите на изразите. Полезно е за възстановяване на остарели индекси на изразите.
    • Сега тригери TEMP могат да променят и/или заявяват данни от основната схема таблици.
    • Подобрена е командата VACUUM INTO: в случай на използване на име на файл в формат URI с параметър за заявка reserve=N (където N е число от 0 до 255), обемът на резервирането за създадената копие на базата данни е равен на N.
  • Добавени са нови функции на SQL:
  • Актуализации в конзолната утилита:
    • Съществени подобрения на командата .mode.
    • Благодарение на разширението QRF е подобрено форматирането на резултатите. Например, числата вече по подразбиране са подравнени вдясно в режим таблично представяне.
    • По подразбиране QRF сега се използва при интерактивно използване на конзолната утилита за показване на резултати от заявки в блокове, формирани с помощта на Unicode символи за рисуване на блокове, което увеличава четливостта. Остатъчният формат на извеждане се използва при пакетно изпълнение на команди за осигуряване на съвместимост.
    • Самостоятелните (не заключени в кавички) точки с точка в края на командите с точка биват игнорирани без предупреждение. Това е възможна несъвместимост!
    • Командите .testcase и .check бяха поправени. Сега работят и се използват в скриптовете, включени в стандартния набор от тестове на SQLite, наличен в изходния код.
    • Аргументите на командния ред, които съответстват на шаблоните *.sql или *.txt и представляват имена на непразни файлове, се прочитат и интерпретират като скриптове, съдържащи SQL оператори и/или [команди с точка](https://sqlite.org/cli.html#dotcmd).
    • Сега за аргумента на командата .timer може да се зададе once, за да се задейства таймера само при изпълнението на следващия SQL запит.
    • Новият параметър —timeout S на командата .progress води до прекратяване на изпълнението на SQL запитванията след S секунди.
    • Командата .indexes беше променена, така че аргументът PATTERN сега съвпада с името на индекса, а не с името на индексираната таблица (в резултат на което аргументът PATTERN стана наистина полезен). Освен това, в командата .indexes бяха добавени няколко нови опции.
  • Подобрения в C API:
  • Подобрения в планиращия модул за запитвания:
    • За EXCEPT, INTERSECT и UNION винаги се използва алгоритъм за сортиране и сливане, тъй като той почти винаги работи по-бързо от използването на хеш таблици.
    • Подобрения в механизма за избор на реда на join при изпълнение на големи многостранни съединения в звездообразна схема.
    • Оптимизацията на преобразуването EXISTS в JOIN е усъвършенствана, така че добавените условия JOIN не е нужно да са непременно във вътрешните цикли, при условие че всичките зависимости за цикъл преобразуването EXISTS в JOIN са във външните цикли.
    • Оптимизацията omit-noop-join е усъвършенствана, така че може да пропусне верига от съединения, които не влияят на резултата.
    • Оптимизация на запитвания, използващи GROUP BY e1 ORDER BY e2, където e1 и e2 са идентични, с изключение на подредбата ASC/DESC, с помощта на един индекс.
    • Оптимизация на оператора DISTINCT в виртуални таблици в случаите, когато наборът от резултати на запитването не съответства напълно на условието ORDER BY.
  • В разширяване на сесията добавени са нови интерфейси, позволяващи на приложението да добавя промени поединично в обекта sqlite3_changegroup:
  • Подобрения в преобразуването на числа с плаваща запетая ↔ текст.
    • Кодът е напълно пренаписан за подобряване на производителността.
    • Сега по подразбиране закръглянето се извършва до 17 значещи цифри вместо 15, както беше в предишните версии. При нужда това значение може да се промени с функцията sqlite3_db_config с опцията SQLITE_DBCONFIG_FP_DIGITS (вижте точка 6g по-горе).
  • Добавена е възможност самовъзстановяваща се индексна за решаване на проблема на остарели индекси на изразите.
  • В конзолната утилита sqlite3_rsync е добавена опцията -p|—port.
  • Поддръжката на Windows RT.
  • JavaScript/WASM
    • Добавена VFS opfs-wl, функционално идентична на opfs, но използваща Web Locks за заключвания, което позволява по-справедливо разпределение на заключванията в сравнение с протокола opfs. opfs-wl изисква функцията Atomics.waitAsync(), затова за работата му са нужни по-нови версии на браузърите в сравнение с opfs.

Източник: linux.org.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster