Április 9-én megjelent a 3.53.0 verziójú kompakt, kereszttplatformos beágyazott DBMS SQLite. A projekt kódja C nyelven íródott és közszabadságként (public domain) terjesztett.
Változások:
- Hiba javítva WAL-reset adatbázis sérülés hiba. Lásd a korábbi hírt SQLite 3.51.3 hibákkal, amelyek a WAL módban adatbázis-károsodáshoz vezethetnek..
- Az SQL-lekérdezések eredményeinek formázásához használt könyvtár hozzáadva Lekérdezési Eredmény Formázó (QRF) a fix szélességű betűtípusú képernyőn való könnyű olvasás érdekében.
- Hozzáadva a módszert format refs TCL interfész a QRF eléréséhez TCL-ből.
- A QRF mostantól használatban van a konzol alkalmazásban sqlite-ot fogunk használni. a lekérdezések eredményeinek formázására, ami javította azok megjelenítését.
- Új SQL nyelvi lehetőségek:
- Javítva van a parancs funkcionalitása ALTER TABLE a NOT NULL és CHECK megkötések hozzáadásának és eltávolításának lehetőségéért.
- Operátor REINDEX KIFEJEZÉSEK a kifejezésindexek újraindexelését végzi. Hasznos elavult kifejezésindexek helyreállításához.
- Most TEMP triggerek módosíthatják és/vagy lekérdezhetik az alapvető séma tábláiból származó adatokat.
- Javítva van a parancs VACUUM INTO: ha a címzett URI formátumú fájlnevet tartalmazó címet használunk, amely kérdési paramétert tartalmaz reserve=N (ahol N 0 és 255 közötti szám), a létrehozott adatbázis másolatához tartozó fenntartási mennyiséget N értékre állítják be.
- Új SQL funkciók hozzáadva:
- Frissítések a konzol alkalmazásban:
- Jelentős javítások a parancsban .mode.
- Köszönhetően QRF kiterjesztésében az eredmények formázása javítva. Például mostantól a számok alapértelmezés szerint jobbra vannak igazítva a táblázatos kimeneti mód.
- Alapértelmezés szerint a QRF-t most interaktív használat során a konzol alkalmazásban használják az Unicode blokkjellemzőkkel létrehozott blokkokban megjelenített lekérdezési eredmények megjelenítésére, ami javította az olvashatóságot. Az elavult kimeneti formátumot parancsok kötegelt végrehajtásakor használják a kompatibilitás érdekében.
- Az egyedüli (nem idézőjelben szereplő) pontosvesszők a végén ponttal ellátott parancsok figyelmeztetés nélkül figyelmen kívül maradnak. Ez egy lehetséges inkompatibilitás!
- Javítva a .testcase és .check parancsokat. Mostantól valóban működnek és használják őket az SQLite standard teszthalmazában szereplő szkriptekben, amelyek a forráskód részét képezik.
- A parancssori argumentumok, amelyek megfelelnek a *.sql vagy *.txt mintáknak és üres fájlneveket képviselnek, betöltésre kerülnek és SQL-parancsokkal és/vagy [pontos parancsokkal]((https://sqlite.org/cli.html#dotcmd).
- Most a .timer parancs argumentuma a once értéket kaphatja, így a timer csak a következő SQL-lekérdezés végrehajtásakor indul el.
- Az új —timeout S paraméter a .progress parancsban megszakítja az SQL-lekérdezések végrehajtását, ha S másodperc eltelt.
- A .indexes parancs módosult, így a PATTERN argumentum most a indexelési táblázat nevével, és nem az index nevével egyezik meg (ennek köszönhetően a PATTERN argumentum valóban hasznossá vált). Ezenkívül a .indexes parancshoz új lehetőségek kerültek hozzáadásra.
- Fejlesztések a C API-ban:
- sqlite3_str_truncate()
- sqlite3_str_free()
- sqlite3_carray_bind_v2()
- A függvénybe sqlite3_prepare_v3() hozzáadva egy új opciót SQLITE_PREPARE_FROM_DDL, amely lehetővé teszi a virtuális táblák implementációinak, hogy biztonságosan előkészítsenek SQL-parancsokat, amelyeket az adatbázis sémájából szereztek.
- Hozzáadva egy konstans SQLITE_UTF8_ZT, amely paraméterként használható a következő funkciókban sqlite3_result_text64() vagy sqlite3_bind_text64() annak jelzésére, hogy az érték UTF-8 kódolású és záró nullával végződik.
- A függvénybe sqlite3_limit() hozzáadva egy új opciót SQLITE_LIMIT_PARSER_DEPTH.
- A függvénybe sqlite3_db_config() hozzáadva egy új opciót SQLITE_DBCONFIG_FP_DIGITS. Lásd még a 9b pontosítást alább.
- Lekérdezéstervező fejlesztések:
- Az EXCEPT, INTERSECT és UNION esetében mindig a rendezési és összevonási algoritmust alkalmazzuk, mivel ez szinte mindig gyorsabb, mint a hash-táblák használata.
- Fejlesztések a join sorrend kiválasztásának mechanizmusában nagy többoldalú összekapcsolások végrehajtása során csillagdiagram-sémában.
- Javították az EXISTS átalakítás optimálását JOIN-ra, így a behelyezett JOIN feltételek nem szükséges, hogy belső ciklusokban legyenek, feltéve, hogy az összes függőség az EXISTS JOIN-ba átírásának ciklusaiban a külső ciklusokban található.
- Továbbfejlesztették az omit-noop-join optimalizálást, így képes kihagyni olyan csatlakozási láncokat, amelyek nem befolyásolják az eredményt.
- Optimalizálva a lekérdezéseket, amelyek a GROUP BY e1 ORDER BY e2 használják, ahol e1 és e2 azonosak, kivéve a rendezési S/V sorrendet, egy index használatával.
- A DISTINCT operátor optimalizálása virtuális táblákban olyan esetekben, amikor a lekérdezési eredmények halmaza nem teljesen felel meg az ORDER BY feltételnek.
- A munkamenet kiterjesztése új interfészek kerültek hozzáadásra, amelyek lehetővé teszik az alkalmazás számára, hogy változtatásokat egyesével adjon hozzá az sqlite3_changegroup objektumhoz:
- Javítások a lebegőpontos számok számra ↔ szöveggé konvertálásában.
- A kód teljesen át lett írva a teljesítmény javítása érdekében.
- Mostantól az alapértelmezett kerekítés 17 signifikáns számjegyre történik, a korábbi verziókban használt 15 helyett. Szükség esetén ez az érték módosítható a sqlite3_db_config függvény segítségével, SQLITE_DBCONFIG_FP_DIGITS (lásd a fent 6g pontot).
- Hozzáadva a lehetőség önhelyreállító index probléma megoldására. kifejezésindexek helyreállításához.
- A parancssori eszközbe sqlite3_rsync hozzáadva a -p|—port opció.
- A támogatás leállítva Windows RT.
- JavaScript/WASM
- Hozzáadva a VFS opfs-wl, amely funkcionálisan az opfs-nek megfelelő, de Web Locks-ot használ a zárolásokhoz, lehetővé téve a zárolások igazságosabb elosztását, mint az opfs protokollnál. Az opfs-wl az Atomics.waitAsync() függvény meglétét igényli, így újabb böngésző verziókra van szükség a működéséhez, mint az opfs esetében.
Forrás: linux.org.ru
