Издание на SQLite 3.35

Објавено е изданието на SQLite 3.35, лесен DBMS дизајниран како библиотека со приклучок. SQLite кодот се дистрибуира како јавен домен, т.е. може да се користи без ограничувања и бесплатно за која било намена. Финансиската поддршка за програмерите на SQLite е обезбедена од специјално создаден конзорциум, кој вклучува компании како Adobe, Oracle, Mozilla, Bentley и Bloomberg.

Главни промени:

  • Додадени се вградени математички функции (log2(), cos(), tg(), exp(), ln(), pow(), итн.) кои можат да се користат во SQL. Овозможувањето на вградените функции бара градење со опцијата „-DSQLITE_ENABLE_MATH_FUNCTIONS“.
  • Спроведена поддршка за изразот „ALTER TABLE DROP COLUMN“ за отстранување на колони од табела и за чистење на податоците претходно складирани во дадена колона.
  • Имплементацијата на операцијата UPSERT (додај-или-измени) е проширена, овозможувајќи преку изрази како „INSERT ... ON CONFLICT НЕ НИШТО/АЖУРИРАЈ“ да се игнорира грешка или да се изврши ажурирање наместо да се вметнува ако е невозможно да се додаде податоци преку „INSERT“ (на пример, ако веќе постои запис, можете да направите UPDATE наместо INSERT). Новата верзија ви овозможува да наведете повеќе блокови ON CONFLICT, кои ќе се обработуваат по ред. Последниот блок „ON CONFLICT“ дозволува параметарот за дефиниција на конфликт да се испушти за да се користи „DO UPDATE“.
  • Операциите DELETE, INSERT и UPDATE го поддржуваат изразот RETURNING, кој може да се користи за прикажување на содржината на избришан, вметнат или изменет запис. На пример, изразот „внеси во ... враќање id“ ќе го врати идентификаторот на додадената линија, а „ажурирај ... постави цена = цена * 1.10 повратна цена“ ќе ја врати променетата вредност на цената.
  • За обичните изрази на табела (CTE), кои дозволуваат употреба на привремени именувани множества на резултати специфицирани со исказот WITH, дозволен е избор на режими „МАТЕРИЈАЛИЗИРАНО“ и „НЕ МАТЕРИЈАЛИЗИРАНО“. „МАТЕРИЈАЛИЗИРАНО“ подразбира кеширање на барањето наведено во приказот во посебна физичка табела и потоа преземање податоци од оваа табела, а со „НЕ МАТЕРИЈАЛИЗИРАНО“ ќе се вршат повторени барања секој пат кога ќе се пристапи до приказот. SQLite првично беше стандардно „НЕ МАТЕРИЈАЛИЗИРАНО“, но сега е променето во „МАТЕРИЈАЛИЗИРАНО“ за CTE користени повеќе од еднаш.
  • Намалена потрошувачка на меморија при извршување на операцијата VACUUM на бази на податоци кои вклучуваат многу големи TEXT или BLOB вредности.
  • Работа е направена за зголемување на перформансите на оптимизатор и планер за прашања:
    • Додадени оптимизации при користење на функциите min и max со изразот „IN“.
    • Извршувањето на изјавата ПОСТОИ е забрзано.
    • Спроведено проширување на подпрашања од UNION ALL изразите што се користат како дел од JOIN.
    • Индексот се користи за IS NOT NULL изрази.
    • Обезбедува дека „x IS NULL“ и „x IS NOT NULL“ се конвертираат во FALSE или TRUE за колоните што имаат атрибут „NOT NULL“.
    • Прескокнете ја проверката на странските клучеви во UPDATE ако операцијата не ги промени колоните поврзани со странскиот клуч.
    • Дозволено е да се преместуваат делови од блок WHERE во подпрашања што содржат функции на прозорец, сè додека тие делови се ограничени на работа со константи и копии на изрази од блоковите PARTITION BY што се користат во функциите на прозорецот.
  • Промени во интерфејсот на командната линија:
    • Додадена е командата „.filectrl data_version“.
    • Командите „.once“ и „.output“ сега поддржуваат пренесување излез до управувачот наречен со помош на неименувани цевки („|“).
    • Аргументите „stmt“ и „vmstep“ се додадени во командата „.stats“ за прикажување статистика на изрази и бројачи на виртуелни машини.

Извор: opennet.ru

Додадете коментар