Izdanje DBMS SQLite 3.35

Objavljeno je izdanje SQLite 3.35, laganog DBMS-a dizajniranog kao plug-in biblioteka. SQLite kod se distribuira u javnoj domeni, tj. može se koristiti bez ograničenja i besplatno za bilo koju svrhu. Financijsku potporu SQLite programerima pruža posebno stvoreni konzorcij koji uključuje tvrtke kao što su Adobe, Oracle, Mozilla, Bentley i Bloomberg.

Velike 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 određenom stupcu.
  • Implementacija operacije UPSERT (add-or-modify) je proširena, dopuštajući izrazima kao što je "INSERT ... ON CONFLICT RADI NIŠTA/UPDATE" ignoriranje pogreške ili izvođenje ažuriranja umjesto umetanja ako je nemoguće dodati podatke putem “INSERT” (na primjer, ako zapis već postoji, možete napraviti UPDATE umjesto INSERT). Nova verzija vam omogućuje da navedete više blokova ON CONFLICT, koji će se redom obrađivati. Posljednji blok "ON CONFLICT" omogućuje izostavljanje parametra za određivanje sukoba kako bi se koristio "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" vratit će identifikator dodanog retka, a "update ... set price = price * 1.10 returning price" vratit će promijenjenu vrijednost cijene.
  • Za uobičajene tablične izraze (CTE), koji dopuštaju korištenje privremenih imenovanih skupova rezultata specificiranih pomoću naredbe WITH, dopušten je izbor načina rada "MATERIALIZED" i "NOT MATERIALIZED". "MATERIALIZED" podrazumijeva spremanje u predmemoriju upita navedenog u pogledu u zasebnu fizičku tablicu i zatim dohvaćanje podataka iz ove tablice, a s "NOT MATERIALIZED" ponovljeni upiti će se izvoditi svaki put kada se pristupi prikazu. SQLite je izvorno imao zadani način rada "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.
  • Radilo se na povećanju performansi alata za optimizaciju i planera upita:
    • Dodane su optimizacije pri korištenju funkcija min i max s izrazom "IN".
    • Izvršenje naredbe EXISTS je ubrzano.
    • Implementirano proširenje podupita iz UNION ALL izraza koji se koriste kao dio JOIN-a.
    • Indeks se koristi za NIJE NULL izraze.
    • Osigurava da se "x IS NULL" i "x IS NOT NULL" pretvaraju u FALSE ili TRUE za stupce koji imaju atribut "NOT NULL".
    • Preskočite provjeru stranih ključeva u UPDATE ako operacija ne mijenja stupce povezane sa stranim ključem.
    • Dopušteno je premještati dijelove WHERE bloka u podupiti koji sadrže prozorske funkcije, sve dok su ti dijelovi ograničeni na rad s konstantama i kopijama izraza iz PARTITION BY blokova koji se koriste u prozorskim funkcijama.
  • Promjene u sučelju naredbenog retka:
    • Dodana naredba ".filectrl data_version".
    • Naredbe ".once" i ".output" sada podržavaju prosljeđivanje izlaza rukovatelju koji se poziva pomoću neimenovanih cijevi ("|").
    • Argumenti “stmt” i “vmstep” dodani su naredbi “.stats” za prikaz statistike izraza i brojača virtualnog stroja.

Izvor: opennet.ru

Dodajte komentar