SQLite 3.35 har slÀppts, en lÀttviktsdatabas som erbjuds som en delbar bibliotek. Koden för SQLite distribueras som offentlig egendom (public domain), vilket innebÀr att den kan anvÀndas utan begrÀnsningar och kostnadsfritt för alla ÀndamÄl. Utvecklarna av SQLite fÄr ekonomiskt stöd frÄn ett sÀrskilt konsortium som inkluderar företag sÄsom Adobe, Oracle, Mozilla, Bentley och Bloomberg.
Huvudsakliga förÀndringar:
- Inbyggda matematiska funktioner (log2(), cos(), tg(), exp(), ln(), pow() etc.) har lagts till och kan anvĂ€ndas i SQL. För att aktivera de inbyggda funktionerna krĂ€vs en byggnad med alternativet â-DSQLITE_ENABLE_MATH_FUNCTIONSâ.
- Stödet för uttrycket âALTER TABLE DROP COLUMNâ har implementerats för att ta bort kolumner frĂ„n en tabell och rensa data som tidigare lagrats i den kolumnen.
- Implementeringen av UPSERT-operationen (lĂ€gg till eller modifiera) har utvidgats, vilket gör det möjligt genom uttryck av typen âINSERT ⊠ON CONFLICT DO NOTHING/UPDATEâ att ignorera fel eller utföra en uppdatering istĂ€llet för att infoga nĂ€r det inte gĂ„r att lĂ€gga till data via âINSERTâ (t.ex. om posten redan existerar, kan UPDATE utföras istĂ€llet för INSERT). I den nya versionen Ă€r det tillĂ„tet att ange flera block âON CONFLICTâ som kommer att behandlas i ordning. I det sista blocket âON CONFLICTâ Ă€r det tillĂ„tet att inte ange parameter för konfliktbestĂ€mning för att anvĂ€nda âDO UPDATEâ.
- I DELETE-, INSERT- och UPDATE-operationer har stödet för uttrycket RETURNING implementerats, vilket gör att innehĂ„llet frĂ„n en borttagen, införd eller Ă€ndrad post kan skrivas ut. Till exempel kommer uttrycket âinsert into ⊠returning idâ att Ă„terlĂ€mna identifieraren för den tillagda raden, medan âupdate ⊠set price = price * 1.10 returning priceâ kommer att Ă„terlĂ€mna det Ă€ndrade vĂ€rdet av price.
- För gemensamma tabelluttryck (Common Table Expression, CTE), som möjliggör anvĂ€ndning av temporĂ€ra namngivna resultatuppsĂ€ttningar som anges med hjĂ€lp av operatorn WITH, Ă€r valet av lĂ€gen âMATERIALIZEDâ och âNOT MATERIALIZEDâ tillĂ„tet. âMATERIALIZEDâ innebĂ€r att den angivna frĂ„gan cachas i en separat fysisk tabell med efterföljande hĂ€mtning av data frĂ„n denna tabell, medan med âNOT MATERIALIZEDâ vid varje Ă„tkomst till visningen kommer upprepade frĂ„gningar att göras. Ursprungligen anvĂ€ndes âNOT MATERIALIZEDâ som standard i SQLite, men för CTE som anvĂ€nds mer Ă€n en gĂ„ng har det nu Ă€ndrats till âMATERIALIZEDâ.
- Minskat minnesanvÀndning vid utförande av VACUUM-operationer för databaser som innehÄller mycket stora vÀrden med typerna TEXT eller BLOB.
- Arbete har utförts för att öka prestanda hos optimeraren och förfrÄgningsplaneraren:
- Optimeringar har lagts till vid anvÀndning av funktioner som min och max med uttrycket 'IN'.
- Utförandet av operatorn EXISTS har snabbarbetats.
- Implementering av underfrÄgor frÄn UNION ALL-uttryck som anvÀnds i JOIN.
- Index har anvÀnts för uttrycken IS NOT NULL.
- Konverteringen 'x IS NULL' och 'x IS NOT NULL' till FALSE eller TRUE har sÀkerstÀllts för kolumner med egenskapen 'NOT NULL'.
- Kontroll av frÀmmande nycklar har utelÀmnats i UPDATE om operationen inte Àndrar kolumner som Àr relaterade till den frÀmmande nyckeln.
- Flyttning av delar av WHERE-klausulen till underfrÄgor som innehÄller fönsterfunktioner har tillÄtits, om dessa delar begrÀnsas till arbete med konstanter och kopior av uttryck frÄn 'PARTITION BY'-block som anvÀnds i fönsterfunktionerna.
- Ăndringar i kommandoradsgrĂ€nssnittet:
- Kommandot '.filectrl data_version' har lagts till.
- I kommandona '.once' och '.output' har stöd för att överföra utdata till en hanterare som kallas med hjÀlp av oidentifierade kanaler ('|') lagts till.
- Argumenten 'stmt' och 'vmstep' för att visa statistik om uttryck och virtuella maskinrÀknare har lagts till i kommandot '.stats'.
KĂ€lla: opennet.ru
