Vydání SQLite 3.35

Bylo zveřejněno vydání SQLite 3.35, lehkého DBMS navrženého jako zásuvná knihovna. Kód SQLite je distribuován ve veřejné doméně, tzn. lze používat bez omezení a zdarma pro jakýkoli účel. Finanční podporu pro vývojáře SQLite zajišťuje speciálně vytvořené konsorcium, které zahrnuje společnosti jako Adobe, Oracle, Mozilla, Bentley a Bloomberg.

Hlavní změny:

  • Přidány vestavěné matematické funkce (log2(), cos(), tg(), exp(), ln(), pow() atd., které lze použít v SQL. Povolení vestavěných funkcí vyžaduje sestavení s volbou "-DSQLITE_ENABLE_MATH_FUNCTIONS".
  • Implementována podpora pro výraz „ALTER TABLE DROP COLUMN“ pro odstranění sloupců z tabulky a vymazání dat dříve uložených v daném sloupci.
  • Implementace operace UPSERT (add-or-modify) byla rozšířena, což umožňuje prostřednictvím výrazů jako „INSERT...ON CONFLICT NEDĚLAT/AKTUALIZOVAT“ ignorovat chybu nebo provést aktualizaci namísto vložení, pokud není možné přidat data prostřednictvím „INSERT“ (například pokud již záznam existuje, můžete místo INSERT provést UPDATE). Nová verze umožňuje zadat více bloků ON CONFLICT, které budou zpracovány v pořadí. Poslední blok "ON CONFLICT" umožňuje vynechat parametr definice konfliktu, aby bylo možné použít "DO UPDATE".
  • Operace DELETE, INSERT a UPDATE podporují výraz RETURNING, který lze použít k zobrazení obsahu odstraněného, ​​vloženého nebo upraveného záznamu. Například výraz „vložit do ... returning id“ vrátí identifikátor přidaného řádku a „update ... set price = price * 1.10 returning price“ vrátí hodnotu změněné ceny.
  • Pro běžné tabulkové výrazy (CTE), které umožňují použití dočasných pojmenovaných sad výsledků zadaných pomocí příkazu WITH, je povolena volba režimů „MATERIALIZED“ a „NOT MATERIALIZED“. „MATERIALIZOVANÉ“ znamená uložení dotazu určeného v pohledu do mezipaměti v samostatné fyzické tabulce a následné načtení dat z této tabulky a při „NEMATERIALIZOVANÉM“ se budou při každém přístupu k pohledu provádět opakované dotazy. SQLite měl původně výchozí hodnotu „NOT MATERIALIZED“, ale nyní se změnil na „MATERIALIZED“ pro CTE používané více než jednou.
  • Snížená spotřeba paměti při provádění operace VACUUM v databázích, které obsahují velmi velké hodnoty TEXT nebo BLOB.
  • Byla provedena práce na zvýšení výkonu optimalizátoru a plánovače dotazů:
    • Přidány optimalizace při použití funkcí min a max s výrazem "IN".
    • Provádění příkazu EXISTS bylo urychleno.
    • Implementováno rozšíření poddotazů z výrazů UNION ALL používaných jako součást JOIN.
    • Index se používá pro výrazy IS NOT NULL.
    • Zajišťuje, že "x IS NULL" a "x IS NOT NULL" jsou převedeny na FALSE nebo TRUE pro sloupce, které mají atribut "NOT NULL".
    • Přeskočte kontrolu cizích klíčů v UPDATE, pokud operace nezmění sloupce spojené s cizím klíčem.
    • Je povoleno přesouvat části bloku WHERE do poddotazů obsahujících funkce okna, pokud jsou tyto části omezeny na práci s konstantami a kopiemi výrazů z bloků PARTITION BY používaných ve funkcích okna.
  • Změny v rozhraní příkazového řádku:
    • Přidán příkaz ".filectrl data_version".
    • Příkazy ".once" a ".output" nyní podporují předávání výstupu obslužné rutině volané pomocí nepojmenovaných kanálů ("|").
    • Argumenty „stmt“ a „vmstep“ byly přidány do příkazu „.stats“ pro zobrazení statistik výrazů a čítačů virtuálních strojů.

Zdroj: opennet.ru

Přidat komentář