9. travnja objavljena je verzija 3.53.0 kompaktne višekratne ugrađene DBMS-a SQLite. Kod projekta napisan je na jeziku C i distribuira se kao javno dobro (public domain).
Promjene:
- Ispravljena greška WAL-reset greška oštećenja baze podataka. Pogledajte prethodnu vijest SQLite 3.51.3 s ispravkom mogućeg oštećenja baze podataka u WAL načinu rada.
- Dodana biblioteka za formatiranje rezultata SQL upita Format za rezultate upita (QRF) za poboljšanje čitljivosti na ekranu s fiksnom širinom slova.
- Dodana metoda format za TCL sučelje za pristup QRF-u iz TCL-a.
- QRF se sada koristi u konzolnoj aplikaciji sqlite za formatiranje rezultata upita, što je poboljšalo njihovo prikazivanje.
- Nove mogućnosti SQL jezika:
- Poboljšane mogućnosti naredbe ALTER TABLE za omogućavanje dodavanja i uklanjanja ograničenja NOT NULL i CHECK.
- Operator REINDEX EXPRESSIONS provođenje ponovne indeksacije indeksnih izraza. Korisno za oporavak zastarjelih indeksnih izraza.
- Sada TEMP okidači mogu mijenjati i/ili upitvati podatke iz tablica glavne sheme.
- Poboljšana naredba VACUUM INTO: u slučaju korištenja kao odredišna adresa imena datoteke u URI formatu koja sadrži parametar upita reserve=N (gdje je N broj od 0 do 255), volumen rezervacije za novu kopiju baze podataka postavljen je na N.
- Dodane nove SQL funkcije:
- Ažuriranja u konzolnoj aplikaciji:
- Značajna poboljšanja naredbe .mode.
- Zahvaljujući QRF proširenju formatiranje rezultata je poboljšano. Na primjer, brojevi se sada prema zadanim postavkama poravnavaju desno u načinu tabličnog prikaza.
- Prema zadanim postavkama QRF se sada koristi tijekom interaktivne upotrebe konzolne aplikacije za prikazivanje rezultata upita u blokovima, oblikovanim pomoću Unicode simbola, čime se poboljšava čitljivost. Zastarjeli format ispisa koristi se prilikom serijskog izvršavanja komandi radi osiguranja kompatibilnosti.
- Usamljene (neoznačene) točke sa zarezom na kraju naredbi s točkom se ignoriraju bez upozorenja. Ova situacija može uzrokovati nekompatibilnost!
- Ispravljene su naredbe .testcase i .check. Sada doista rade i koriste se u skriptama koje su uključene u standardni testni skup SQLite-a, koji su dio izvornih kodova.
- Argumenti naredbenog retka koji odgovaraju obrascima *.sql ili *.txt i predstavljaju imena nepraznih datoteka, čitaju se i interpretiraju kao skripte koje sadrže SQL naredbe i / ili [komande s tačkom]((https://sqlite.org/cli.html#dotcmd).
- Sada se kao argument komande .timer može navesti once kako bi se tajmer aktivirao samo pri izvršenju sledećeg SQL upita.
- Nova opcija —timeout S za komandu .progress dovodi do prekida izvršenja SQL upita nakon S sekundi.
- Komanda .indexes je promenjena tako da argument PATTERN sada odgovara imenu indeksa, a ne imenu indeksirane tabele (što čini argument PATTERN zaista korisnim). Pored toga, komandi .indexes su dodane nove opcije.
- Poboljšanja u C API-u:
- sqlite3_str_truncate()
- sqlite3_str_free()
- sqlite3_carray_bind_v2()
- U funkciju sqlite3_prepare_v3() dodana je opcija SQLITE_PREPARE_FROM_DDL, koja omogućava implementacijama virtualnih tabela da sigurno pripremaju SQL naredbe dobijene iz šeme baze podataka.
- Dodana je konstanta SQLITE_UTF8_ZT, koja se može koristiti kao parametar kodiranja u funkcijama sqlite3_result_text64() ili sqlite3_bind_text64() za označavanje da je vrednost kodirana u UTF-8 i završava se nulom.
- U funkciju sqlite3_limit() dodana je opcija SQLITE_LIMIT_PARSER_DEPTH.
- U funkciju sqlite3_db_config() dodana je opcija SQLITE_DBCONFIG_FP_DIGITS. Takođe, pogledajte stavku 9b u nastavku.
- Poboljšanja planera upita:
- Za EXCEPT, INTERSECT i UNION koristi se algoritam sortiranja i spajanja, jer gotovo uvek radi brže od korišćenja heš tabela.
- Poboljšanja u mehanizmu odabira reda join prilikom izvršavanja velikih višestranih spajanja u zvezdastoj shemi.
- Poboljšana je optimizacija konverzije EXISTS u JOIN tako da umetnuti uslovi JOIN ne moraju nužno biti u unutrašnjim petljama, pod uslovom da sve zavisnosti za petlje konverzije EXISTS u JOIN budu u spoljnim petljama.
- Poboljšana je optimizacija omit-noop-join tako da može izostaviti lanac spajanja koji ne utiče na rezultat.
- Optimizacija upita koji koriste GROUP BY e1 ORDER BY e2, gde su e1 i e2 identični, osim reda sortiranja ASC/DESC, koristeći jedan indeks.
- Optimizacija operatora DISTINCT u virtualnim tabelama u slučajevima kada skup rezultata upita ne odgovara u potpunosti uslovu ORDER BY.
- U proširenje sesije dodani su novi interfejsi koji omogućuju aplikaciji da dodaje promene pojedinačno u objekt sqlite3_changegroup:
- Unapređenja u konverziji brojeva sa pokretnom decimalnom tačkom ↔ tekst.
- Kod je potpuno prepisan radi poboljšanja performansi.
- Sada se po defaultu zaokruživanje vrši na 17 značajnih cifara umesto 15, kao što je to bilo u svim prethodnim verzijama. Po potrebi, ovu vrednost možete promeniti pomoću funkcije sqlite3_db_config sa opcijom SQLITE_DBCONFIG_FP_DIGITS (vidi tačku 6g iznad).
- Dodana opcija samoobnavljanja indeksa da reši problem zastarjelih indeksnih izraza.
- U konzolnu alatku sqlite3_rsync dodana opcija -p|—port.
- Prestaće podrška za Windows RT.
- JavaScript/WASM
- Dodana je VFS opfs-wl, funkcionalno identična opfs, ali koristi Web Locks za blokade, što omogućava pravednije raspodeljivanje blokada nego u protokolu opfs. opfs-wl zahteva postojanje funkcije Atomics.waitAsync(), tako da su potrebne novije verzije pretraživača za njegovu podršku u odnosu na opfs.
Izvor: linux.org.ru
