Vydání databázového systému SQLite 3.35

Bylo publikováno vydání SQLite 3.35, lehkého databázového systému, který je poskytován jako připojitelná knihovna. Kód SQLite je k dispozici jako veřejné vlastnictví (public domain), což znamená, že může být používán bez omezení a bezplatně pro jakékoli účely. Finanční podporu vývojářům SQLite zajišťuje speciálně vytvořený konsorcium, které zahrnuje společnosti jako Adobe, Oracle, Mozilla, Bentley a Bloomberg.

Hlavní změny:

  • Byly přidány vestavěné matematické funkce (log2(), cos(), tg(), exp(), ln(), pow() atd.), které lze používat v SQL. Pro zahrnutí vestavěných funkcí je nutné sestavení s možností „-DSQLITE_ENABLE_MATH_FUNCTIONS“.
  • Byla implementována podpora výrazu „ALTER TABLE DROP COLUMN“ pro odstranění sloupců z tabulky a vyčištění dříve uložených dat v tomto sloupci.
  • Byla rozšířena implementace operace UPSERT (přidat-nebo-upravit), která umožňuje pomocí výrazů jako „INSERT … ON CONFLICT DO NOTHING/UPDATE“ ignorovat chybu nebo provést aktualizaci místo vkládání v případě nemožnosti přidání dat přes „INSERT“ (například když záznam již existuje, místo INSERT lze provést UPDATE). V nové verzi je povoleno určení více bloků „ON CONFLICT“, které budou zpracovány v pořadí, v jakém jsou uvedeny. V posledním bloku „ON CONFLICT“ není povinné uvádět parametr definice konfliktu pro použití „DO UPDATE“.
  • V operacích DELETE, INSERT a UPDATE byla implementována podpora výrazu RETURNING, pomocí kterého lze vrátit obsah odstraněného, vloženého nebo změněného záznamu. Například výraz „insert into … returning id“ vrátí identifikátor přidaného řádku, a „update … set price = price * 1.10 returning price“ vrátí změněnou hodnotu price.
  • Pro obecné tabulkové výrazy (Common Table Expression, CTE), které umožňují používat dočasné pojmenované výsledkové sady definované pomocí operátoru WITH, jsou nyní k dispozici režimy „MATERIALIZED“ a „NOT MATERIALIZED“. „MATERIALIZED“ zahrnuje mezipaměť zadanou v dotazu v samostatné fyzické tabulce s následným získáváním dat z této tabulky, zatímco při „NOT MATERIALIZED“ se při každém přístupu k výrazu budou provádět opakované dotazy. Původně byl v SQLite ve výchozím nastavení používán režim „NOT MATERIALIZED“, ale nyní byl pro CTE používané více než jednou změněn na „MATERIALIZED“.
  • Snížená spotřeba paměti při provádění operace VACUUM pro databáze, které obsahují velmi velké hodnoty typu TEXT nebo BLOB.
  • Byla provedena práce na zvýšení výkonu optimalizátoru a plánovače dotazů:
    • Byly přidány optimalizace při použití funkcí min a max s výrazem „IN“.
    • Zrychleno provádění operátoru EXISTS.
    • Byla implementována rozšiřitelnost poddotazů z výrazů UNION ALL, používaných v rámci JOIN.
    • Byl využit index pro výrazy IS NOT NULL.
    • Bylo zajištěno převedení „x IS NULL“ a „x IS NOT NULL“ na FALSE nebo TRUE pro sloupce, které mají atribut „NOT NULL“.
    • Přeskočeno ověření cizích klíčů v UPDATE, pokud operace nemění sloupce spojené s cizím klíčem.
    • Bylo povoleno přesouvání částí bloku WHERE do poddotazů, které obsahují oknové funkce, pokud tyto části jsou omezeny na práci s konstantami a kopiemi výrazů z bloků „PARTITION BY“, používajícími se v oknových funkcích.
  • Změny v rozhraní příkazového řádku:
    • Přidán příkaz „.filectrl data_version“.
    • V příkazech „.once“ a „.output“ byla přidána podpora pro přenos výstupu do zpracovatele, který je volán pomocí nejmenovaných kanálů („|“).
    • Do příkazu „.stats“ byly přidány argumenty „stmt“ a „vmstep“ pro výstup statistiky podle výrazů a čítačů virtuálního stroje.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster