Izdanje SQLite 3.35

Objavljeno je izdanje SQLite 3.35, laganog DBMS-a dizajniranog kao plug-in biblioteka. SQLite kod se distribuira u javnom domenu, tj. može se koristiti bez ograničenja i besplatno u bilo koju svrhu. Finansijsku podršku za SQLite programere pruža posebno kreiran konzorcij, koji uključuje kompanije kao što su Adobe, Oracle, Mozilla, Bentley i Bloomberg.

Glavne promjene:

  • Dodane su ugrađene matematičke funkcije (log2(), cos(), tg(), exp(), ln(), pow(), itd.) koje se mogu koristiti u SQL-u. Omogućavanje ugrađenih funkcija zahtijeva izgradnju s opcijom "-DSQLITE_ENABLE_MATH_FUNCTIONS".
  • Implementirana podrška za izraz “ALTER TABLE DROP COLUMN” za uklanjanje stupaca iz tablice i brisanje podataka prethodno pohranjenih u danoj koloni.
  • Implementacija operacije UPSERT (add-or-modify) je proširena, omogućavajući kroz izraze kao što su "INSERT ... ON KONFLICT NIŠTA NE RADI/AŽURIRAJ" da se ignorira greška ili izvrši ažuriranje umjesto umetanja ako je nemoguće dodati podatke preko “INSERT” (na primjer, ako zapis već postoji, možete uraditi UPDATE umjesto INSERT). Nova verzija vam omogućava da navedete više blokova ON CONFLICT, koji će biti obrađeni po redu. Posljednji blok "ON CONFLICT" dozvoljava da se parametar definicije konflikta izostavi kako bi se koristilo "DO UPDATE".
  • Operacije DELETE, INSERT i UPDATE podržavaju izraz RETURNING, koji se može koristiti za prikaz sadržaja izbrisanog, umetnutog ili modificiranog zapisa. Na primjer, izraz “insert into ... returning id” će vratiti identifikator dodane linije, a “update ... set price = price * 1.10 returning price” će vratiti promijenjenu vrijednost cijene.
  • Za uobičajene tablične izraze (CTE), koji dozvoljavaju upotrebu privremenih imenovanih skupova rezultata specificiranih korištenjem naredbe WITH, dozvoljen je izbor režima “MATERIALIZED” i “NOT MATERIALIZED”. “MATERIALIZED” podrazumijeva keširanje upita navedenog u pogledu u zasebnoj fizičkoj tabeli i zatim dohvaćanje podataka iz ove tabele, a sa “NOT MATERIALIZED” ponovljeni upiti će se izvoditi svaki put kada se pristupi pogledu. SQLite je prvobitno bio podešen na "NOT MATERIALIZED", ali je sada promijenjen u "MATERIALIZED" za CTE-ove koji se koriste više puta.
  • Smanjena potrošnja memorije prilikom izvođenja operacije VACUUM na bazama podataka koje uključuju vrlo velike TEXT ili BLOB vrijednosti.
  • Rad je obavljen na povećanju performansi optimizatora i planera upita:
    • Dodane optimizacije kada se koriste funkcije min i max sa izrazom "IN".
    • Izvršenje naredbe EXISTS je ubrzano.
    • Implementirano proširenje potupita iz UNION ALL izraza koji se koriste kao dio JOIN.
    • Indeks se koristi za izraze IS NOT NULL.
    • Osigurava da se "x IS NULL" i "x IS NOT NULL" konvertiraju u FALSE ili TRUE za stupce koji imaju atribut "NOT NULL".
    • Preskočite provjeru stranih ključeva u UPDATE ako operacija ne mijenja kolone povezane sa stranim ključem.
    • Dozvoljeno je premještanje dijelova WHERE bloka u potupite koji sadrže funkcije prozora, sve dok su ti dijelovi ograničeni na rad sa konstantama i kopijama izraza iz PARTITION BY blokova koji se koriste u funkcijama prozora.
  • Promjene u interfejsu komandne linije:
    • Dodata naredba ".filectrl data_version".
    • Naredbe ".once" i ".output" sada podržavaju prosljeđivanje izlaza rukovaocu koji se zove pomoću neimenovanih cijevi ("|").
    • Argumenti “stmt” i “vmstep” su dodati naredbi “.stats” za prikaz statistike o izrazima i brojačima virtuelnih mašina.

izvor: opennet.ru

Dodajte komentar