Izdaja SQLite 3.35

Objavljena je bila izdaja SQLite 3.35, lahkega DBMS, zasnovanega kot knjižnica vtičnikov. Koda SQLite je distribuirana v javni domeni, tj. se lahko uporablja brez omejitev in brezplačno za kateri koli namen. Finančno podporo razvijalcem SQLite zagotavlja posebej ustvarjen konzorcij, ki vključuje podjetja, kot so Adobe, Oracle, Mozilla, Bentley in Bloomberg.

Večje spremembe:

  • Dodane vgrajene matematične funkcije (log2(), cos(), tg(), exp(), ln(), pow() itd.), ki jih je mogoče uporabiti v SQL. Omogočanje vgrajenih funkcij zahteva gradnjo z možnostjo "-DSQLITE_ENABLE_MATH_FUNCTIONS".
  • Implementirana podpora za izraz »ALTER TABLE DROP COLUMN« za odstranitev stolpcev iz tabele in brisanje podatkov, ki so bili predhodno shranjeni v danem stolpcu.
  • Implementacija operacije UPSERT (dodaj-ali-spremeni) je bila razširjena, kar omogoča prek izrazov, kot je "INSERT ... ON CONFLICT DO NIGHT/UPDATE", da prezre napako ali izvede posodobitev namesto vstavljanja, če ni mogoče dodati podatke prek »INSERT« (na primer, če zapis že obstaja, lahko naredite UPDATE namesto INSERT). Nova različica vam omogoča, da določite več blokov ON CONFLICT, ki bodo obdelani po vrstnem redu. Zadnji blok "ON CONFLICT" omogoča izpustitev parametra definicije konflikta, da lahko uporabite "DO UPDATE".
  • Operacije DELETE, INSERT in UPDATE podpirajo izraz RETURNING, ki se lahko uporablja za prikaz vsebine izbrisanega, vstavljenega ali spremenjenega zapisa. Izraz »insert into ... returning id« bo na primer vrnil identifikator dodane vrstice, »update ... set price = price * 1.10 returning price« pa bo vrnil spremenjeno vrednost cene.
  • Za izraze običajnih tabel (CTE), ki dovoljujejo uporabo začasnih poimenovanih nizov rezultatov, podanih s stavkom WITH, je dovoljena izbira načinov »MATERIALIZED« in »NOT MATERIALIZED«. »MATERIALIZED« pomeni predpomnjenje poizvedbe, podane v pogledu, v ločeno fizično tabelo in nato pridobivanje podatkov iz te tabele, pri »NOT MATERIALIZED« pa bodo ponavljajoče se poizvedbe izvedene ob vsakem dostopu do pogleda. SQLite je bil prvotno privzeto nastavljen na »NOT MATERIALIZED«, zdaj pa se je spremenil v »MATERIALIZED« za več kot enkrat uporabljene CTE.
  • Zmanjšana poraba pomnilnika pri izvajanju operacije VACUUM v bazah podatkov, ki vključujejo zelo velike vrednosti TEXT ali BLOB.
  • Opravljeno je bilo delo za povečanje učinkovitosti optimizatorja in načrtovalca poizvedb:
    • Dodane optimizacije pri uporabi funkcij min in max z izrazom "IN".
    • Izvajanje stavka EXISTS je bilo pospešeno.
    • Implementirana razširitev podpoizvedb iz izrazov UNION ALL, ki se uporabljajo kot del JOIN.
    • Indeks se uporablja za izraze IS NOT NULL.
    • Zagotavlja, da sta »x IS NULL« in »x IS NOT NULL« pretvorjena v FALSE ali TRUE za stolpce, ki imajo atribut »NOT NULL«.
    • Preskočite preverjanje tujih ključev v UPDATE, če operacija ne spremeni stolpcev, povezanih s tujim ključem.
    • Dele bloka WHERE je dovoljeno premikati v podpoizvedbe, ki vsebujejo okenske funkcije, če so ti deli omejeni na delo s konstantami in kopijami izrazov iz blokov PARTITION BY, ki se uporabljajo v okenskih funkcijah.
  • Spremembe vmesnika ukazne vrstice:
    • Dodan ukaz ".filectrl data_version".
    • Ukaza ».once« in ».output« zdaj podpirata posredovanje izhoda v upravljalnik, ki se imenuje z uporabo neimenovanih cevi (»|«).
    • Argumenta »stmt« in »vmstep« sta bila dodana ukazu ».stats« za prikaz statističnih podatkov o izrazih in števcih virtualnih strojev.

Vir: opennet.ru

Dodaj komentar