Është publikuar lëshimi SQLite 3.35, një DBMS i lehtë, i dizajnuar si një bibliotekë e lidhur. Kodi SQLite shpërndahet si pronë publike, që do të thotë se mund të përdoret pa kufizime dhe falas për çdo qëllim. Mbështetja financiare për zhvilluesit e SQLite ofrohet nga një konsorcium i krijuar posaçërisht, që përfshin kompani si Adobe, Oracle, Mozilla, Bentley dhe Bloomberg.
Ndryshimet kryesore:
- Janë shtuar funksione matematike të integruara (log2(), cos(), tg(), exp(), ln(), pow() etj.), të cilat mund të përdoren në SQL. Për të aktivizuar funksionet e integruara kërkohet ndërtimi me opsionin «-DSQLITE_ENABLE_MATH_FUNCTIONS».
- Është implementuar mbështetje për shprehjen «ALTER TABLE DROP COLUMN» për të fshirë kolona nga tabela dhe për të pastruar të dhënat e ruajtura më parë në atë kolonë.
- Është zgjeruar implementimi i operacionit UPSERT (shto-ose-në modifikoni), që lejon, përmes shprehjeve si «INSERT … ON CONFLICT DO NOTHING/UPDATE», të injoroni gabimin ose të ekzekutoni një përditësim në vend të shtimit në rast se nuk është e mundur të shtoni të dhënat përmes «INSERT» (p.sh., nëse regjistrimi tashmë ekziston, në vend të INSERT mund të ekzekutohet UPDATE). Në versionin e ri lejohet përcaktimi i disa blloqeve «ON CONFLICT», që do të trajtohen në rendin e shfaqjes. Në bllokun e fundit «ON CONFLICT» lejohet që të mos përcaktohet parametri i përcaktimit të konfliktit për përdorimin e «DO UPDATE».
- Në operacionet DELETE, INSERT dhe UPDATE është implementuar mbështetje për shprehjen RETURNING, me të cilën mund të nxirren të dhënat e regjistrimit të fshirë, të vendosur ose të modifikuar. P.sh., shprehja «insert into … returning id» do të kthejë identifikuesin e rreshtit të shtuar, ndërsa «update … set price = price * 1.10 returning price» do të kthejë vlerën e modifikuar të çmimit.
- Për shprehjet e tabellave të përgjithshme (Common Table Expression, CTE), që lejojnë përdorimin e setet përfundimtare të përkohshme të emëruara, të përcaktuara nëpërmjet operatorit WITH, është lejuar zgjedhja e modëve «MATERIALIZED» dhe «NOT MATERIALIZED». «MATERIALIZED» nënkupton caching të asaj që është përcaktuar në pamjen e pyetjes në një tabelë fizike të veçantë, me hulumtim të dhënave nga kjo tabelë, ndërsa në «NOT MATERIALIZED» për çdo akses në pamje do të realizohen kërkesa të përsëritura. Fillimisht në SQLite, me default është përdorur moda «NOT MATERIALIZED», por tani për CTE-të që përdoren më shumë se një herë është ndryshuar në «MATERIALIZED».
- Është zvogëluar konsumimi i memories gjatë kryerjes së operacionit VACUUM për DB të përfshirë me vlera shumë të mëdha me tipe TEXT ose BLOB.
- Janë bërë punë për të rritur performancën e optimizuesit dhe planifikuesit të pyetjeve:
- Janë shtuar optimizime gjatë përdorimit të funksioneve min dhe max me shprehjen «IN».
- Është përshpejtuar ekzekutimi i operatorit EXISTS.
- Është implementuar shtrirja e nënpyetjeve nga shprehjet UNION ALL, të përdorura në përbërje të JOIN.
- Është angazhuar indeksi për shprehjet IS NOT NULL.
- Është siguruar që «x IS NULL» dhe «x IS NOT NULL» të konvertohen në FALSE ose TRUE për kolonat që kanë karakteristikën «NOT NULL».
- Kontrolli i çelësave të jashtëm është injoruar në UPDATE, nëse operacioni nuk ndryshon kolonat që lidhen me çelësin e jashtëm.
- Është lejuar zhvendosja e pjesëve të bllokut WHERE në nënpyetje që përmbajnë funksione dritare, nëse këto pjesë janë të kufizuara në punën me konstanta dhe kopje të shprehjeve nga blloqet «PARTITION BY», të përdorura në funksionet dritare.
- Ndryshimet në interfejsin e komandës në linjë:
- Është shtuar komandë «.filectrl data_version».
- Në komandat «.once» dhe «.output» është shtuar mbështetje për transferimin e daljes në trajtues, i cili thirret duke përdorur kanale të paemëruara («|»).
- Në komandën «.stats» janë shtuar argumentet «stmt» dhe «vmstep» për të nxjerrë statistikën mbi shprehjet dhe numëruese të makinerisë virtuale.
Burimi: opennet.ru
