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