Vydanie SQLite 3.35

Bolo zverejnené vydanie SQLite 3.35, ľahkého DBMS navrhnutého ako zásuvná knižnica. Kód SQLite je distribuovaný vo verejnej doméne, t.j. možno použiť bez obmedzení a bezplatne na akýkoľvek účel. Finančnú podporu pre vývojárov SQLite poskytuje špeciálne vytvorené konzorcium, ktoré zahŕňa spoločnosti ako Adobe, Oracle, Mozilla, Bentley a Bloomberg.

Hlavné zmeny:

  • Pridané vstavané matematické funkcie (log2(), cos(), tg(), exp(), ln(), pow() atď.), ktoré možno použiť v SQL. Povolenie vstavaných funkcií vyžaduje zostavenie s možnosťou „-DSQLITE_ENABLE_MATH_FUNCTIONS“.
  • Implementovaná podpora pre výraz “ALTER TABLE DROP COLUMN” na odstránenie stĺpcov z tabuľky a vymazanie údajov predtým uložených v danom stĺpci.
  • Implementácia operácie UPSERT (add-or-modify) bola rozšírená, čo umožňuje prostredníctvom výrazov ako „INSERT...ON CONFLICT NEROBIŤ/AKTUALIZOVAŤ“ ignorovať chybu alebo vykonať aktualizáciu namiesto vloženia, ak nie je možné pridať údaje cez „INSERT“ (ak napríklad záznam už existuje, namiesto INSERT môžete vykonať UPDATE). Nová verzia umožňuje zadať viacero ON CONFLICT blokov, ktoré budú spracované v poradí. Posledný blok "ON CONFLICT" umožňuje vynechať parameter určenia konfliktu, aby bolo možné použiť "DO UPDATE".
  • Operácie DELETE, INSERT a UPDATE podporujú výraz RETURNING, ktorý možno použiť na zobrazenie obsahu odstráneného, ​​vloženého alebo upraveného záznamu. Napríklad výraz „vložiť do ... returning id“ vráti identifikátor pridaného riadku a „update ... set price = price * 1.10 returning price“ vráti zmenenú hodnotu ceny.
  • Pre bežné tabuľkové výrazy (CTE), ktoré umožňujú použitie dočasných pomenovaných skupín výsledkov špecifikovaných pomocou príkazu WITH, je povolená voľba režimov „MATERIALIZED“ a „NOT MATERIALIZED“. „MATERIALIZOVANÉ“ znamená, že sa dotaz špecifikovaný v zobrazení uloží do vyrovnávacej pamäte v samostatnej fyzickej tabuľke a potom sa z tejto tabuľky načítajú údaje a pri „NEMATERIALIZOVANÉ“ sa vykonajú opakované dotazy pri každom prístupe k zobrazeniu. SQLite bol pôvodne nastavený na "NOT MATERIALIZED", ale teraz sa zmenil na "MATERIALIZED" pre CTE používané viac ako raz.
  • Znížená spotreba pamäte pri vykonávaní operácie VACUUM v databázach, ktoré obsahujú veľmi veľké hodnoty TEXT alebo BLOB.
  • Bola vykonaná práca na zvýšení výkonu optimalizátora a plánovača dotazov:
    • Pridané optimalizácie pri používaní funkcií min a max s výrazom „IN“.
    • Vykonanie príkazu EXISTS bolo zrýchlené.
    • Implementované rozšírenie poddotazov z výrazov UNION ALL používaných ako súčasť JOIN.
    • Index sa používa pre výrazy IS NOT NULL.
    • Zabezpečuje, že "x IS NULL" a "x IS NOT NULL" sa skonvertujú na FALSE alebo TRUE pre stĺpce, ktoré majú atribút "NOT NULL".
    • Preskočte kontrolu cudzích kľúčov v UPDATE, ak operácia nezmení stĺpce spojené s cudzím kľúčom.
    • Je povolené presúvať časti bloku WHERE do poddotazov obsahujúcich funkcie okna, pokiaľ sú tieto časti obmedzené na prácu s konštantami a kópiami výrazov z blokov PARTITION BY používaných vo funkciách okna.
  • Zmeny v rozhraní príkazového riadku:
    • Pridaný príkaz „.filectrl data_version“.
    • Príkazy ".once" a ".output" teraz podporujú odovzdávanie výstupu obslužnému programu volanému pomocou nepomenovaných rúr ("|").
    • Argumenty „stmt“ a „vmstep“ boli pridané do príkazu „.stats“ na zobrazenie štatistík výrazov a počítadiel virtuálnych strojov.

Zdroj: opennet.ru

Pridať komentár