9. aprila je izdan 3.53.0 kompaktni multiplatformski ugrađeni SGBD SQLite. Kod projekta je napisan u C jeziku i distribuira se kao javna domena (public domain).
Spremembe:
- Ispravljena greška greška u korupciji baze podataka prilikom resetovanja WAL-a. Pogledajte prethodnu vijest SQLite 3.51.3 sa ispravkom mogućeg oštećenja baze podataka u WAL režimu.
- Dodana biblioteka za formatiranje rezultata SQL upita Formatirač rezultata upita (QRF) za olakšanje čitanja na ekranu s fiksnom širinom.
- Dodana metoda format k TCL sučelju za pristup QRF-u iz TCL-a.
- QRF se sada koristi u konzolnoj utiliti sqlite za formatiranje rezultata upita, čime se poboljšava njihovo prikazivanje.
- Nove mogućnosti SQL jezika:
- Poboljšane mogućnosti komande ALTER TABLE za omogućavanje dodavanja i uklanjanja NOT NULL i CHECK ograničenja.
- Operater REINDEX EXPRESSIONS vrši ponovno indeksiranje izraza indeksiranja. Korisno za obnavljanje zastarjelih izraza indeksa.
- Sedaj TEMP okidači mogu izmijeniti i/ili zatražiti podatke iz tabela osnovnog shematskog prostora.
- Poboljšana komanda VACUUM INTO: u slučaju korištenja URI formata kao odredišta naziva datoteke, koji sadrži parametar upita reserve=N (gdje je N broj od 0 do 255), veličina rezervacije za kreiranu kopiju baze podataka postavlja se na N.
- Dodane nove SQL funkcije:
- Ažuriranja u konzolnoj utiliti:
- Značajna poboljšanja komande .mode.
- Zahvaljujoč proširenju QRF poboljšano formatiranje rezultata. Na primjer, brojevi se sada prema zadanim postavkama poravnavaju desno u režimu tabelarnog prikaza.
- Prema zadanim postavkama, QRF se sada koristi tokom interaktivnog korištenja konzolne utilite za prikaz rezultata upita u blokovima, formiranim pomoću Unicode blokovnih simbola, čime se povećava čitljivost. Zastarjeli format prikaza koristi se prilikom grupnog izvršavanja komandi radi osiguravanja kompatibilnosti.
- Jednostruke (neokvirene) tačke sa zarezom na kraju komandi sa tačkom se ignoriraju bez upozorenja. Ovo može biti potencijalna nekompatibilnost!
- Ispravljene komande .testcase i .check. Sada stvarno rade i koriste se u skriptama koje su deo standardnog pravnog testnog seta SQLite, uključujući izvorne kodove.
- Argumenti komandne linije koji odgovaraju obrascima *.sql ili *.txt i predstavljaju imena nepraznih datoteka čitaju se i interpretiraju kao skripte koje sadrže SQL operatore i/ili [komande sa tačkom]https://sqlite.org/cli.html#dotcmd).
- Zdaj kot argument ukaza .timer lahko navedete once, da se časovnik sproži le ob naslednjem izvajanju SQL poizvedbe.
- Nova parameter —timeout S ukaza .progress vodi do prekinitve izvajanja SQL poizvedb po preteku S sekund.
- Ukaz .indexes je bil spremenjen tako, da argument PATTERN zdaj ustreza imenu indeksa, ne pa imenu indeksirane tabele (kar je razlog, da je argument PATTERN postal resnično uporaben). Poleg tega je bilo v ukaz .indexes dodanih več novih možnosti.
- Izboljšave v C API:
- sqlite3_str_truncate()
- sqlite3_str_free()
- sqlite3_carray_bind_v2()
- V funkcijo sqlite3_prepare_v3() je bila dodana možnost SQLITE_PREPARE_FROM_DDL, ki omogoča implementacijam virtualnih tabel, da varno pripravljajo SQL operatorje, pridobljene iz sheme baze podatkov.
- Dodana je bila konstanta SQLITE_UTF8_ZT, ki jo je mogoče uporabiti kot parameter kodiranja v funkcijah sqlite3_result_text64() ili sqlite3_bind_text64() za določitev, da je vrednost kodirana v UTF-8 in se zaključi z ničlo.
- V funkcijo sqlite3_limit() je bila dodana možnost SQLITE_LIMIT_PARSER_DEPTH.
- V funkcijo sqlite3_db_config() je bila dodana možnost SQLITE_DBCONFIG_FP_DIGITS. Glejte tudi točko 9b spodaj.
- Izboljšave načrtovalnika poizvedb:
- Za EXCEPT, INTERSECT in UNION se vedno uporablja algoritem razvrščanja in združevanja, saj ta skoraj vedno deluje hitreje kot uporaba hash tabel.
- Izboljšave v mehanizmu izbire vrstnega reda join pri izvajanju velikih večstranskih povezav v zvezdasti shemi.
- Izboljšana je optimizacija pretvorbe EXISTS v JOIN, tako da pogojni JOIN ne potrebuje nujno biti v notranjih zankah, pod pogojem, da so vse odvisnosti za zanki pretvorbe EXISTS v JOIN v zunanjih zankah.
- Izboljšana je optimizacija omit-noop-join, da lahko opusti verigo povezav, ki ne vplivajo na rezultat.
- Optimizacija poizvedb, ki uporabljajo GROUP BY e1 ORDER BY e2, kjer sta e1 in e2 identična, razen zaporedja razvrščanja ASC/DESC, z enim indeksom.
- Optimizacija operatorja DISTINCT v virtualnih tabelah v primerih, ko rezultat poizvedbe ne ustreza popolnoma pogojem ORDER BY.
- V razširitev seje dodali so nove vmesnike, ki omogočajo aplikaciji, da dodaja spremembe po eno v objekt sqlite3_changegroup:
- Izboljšave v pretvorbi števil s plavajočo vejico ↔ besedilo.
- Koda je bila popolnoma predelana za izboljšanje zmogljivosti.
- Sedaj je privzeto zaokroževanje izvedeno na 17 znamenj namesto 15, kot je bilo v vseh prejšnjih različicah. To vrednost je možno spremeniti z uporabo funkcije sqlite3_db_config z možnostjo SQLITE_DBCONFIG_FP_DIGITS (glejte tam točko 6g zgoraj).
- Dodana je možnost samodejno obnavljanje indeksa za reševanje težave zastarjelih izraza indeksa.
- V konzolno orodje sqlite3_rsync je bila dodana možnost -p|—port.
- Prekinuta podrška Windows RT.
- JavaScript/WASM
- Dodana je VFS opfs-wl, funkcionalno identična opfs, vendar uporablja za zaklepanja Web Locks, kar omogoča bolj pošteno porazdelitev zaklepov kot v protokolu opfs. opfs-wl zahteva funkcijo Atomics.waitAsync(), zato so za njegovo delovanje potrebne novejše različice brskalnikov kot za opfs.
Izvor: linux.org.ru
