Publicēts SQLite 3.35 laidums, vieglā datubāzu pārvaldības sistēma, ko pārstāv kā piesaistāma bibliotēka. SQLite kods tiek izplatīts kā sabiedriskais īpašums (public domain), t.i., to var izmantot bez ierobežojumiem un bezatlīdzības jebkādiem nolūkiem. SQLite izstrādātāju finansiālo atbalstu nodrošina speciāli izveidots konsorcijs, kurā ietilpst tādas kompānijas kā Adobe, Oracle, Mozilla, Bentley un Bloomberg.
Galvenās izmaiņas:
- Pievienotas iebūvētās matemātiskās funkcijas (log2(), cos(), tg(), exp(), ln(), pow() utt.), kuras var izmantot SQL. Lai iebūvētās funkcijas iekļautu, nepieciešama salikšana ar opciju „-DSQLITE_ENABLE_MATH_FUNCTIONS”.
- Ieviesta izteikuma „ALTER TABLE DROP COLUMN” atbalsts, lai dzēstu kolonnas no tabulas un attīrītu iepriekš tajā saglabātos datus.
- Tika paplašināta UPSERT (ievienot-vai-modificēt) darbība, kas ļauj caur izteikumiem „INSERT … ON CONFLICT DO NOTHING/UPDATE” ignorēt kļūdu vai veikt atjaunināšanu, ja datu pievienošana caur „INSERT” nav iespējama (piemēram, ja ieraksts jau pastāv, tad, vietā „INSERT” var veikt „UPDATE”). Jaunajā versijā ir atļauts norādīt vairākus „ON CONFLICT” blokā, kuri tiks apstrādāti secībā. Pēdējā „ON CONFLICT” blokā ir atļauts nenoteikt konflikta definīcijas parametru „DO UPDATE” izmantošanai.
- Darbībās DELETE, INSERT un UPDATE ir ieviests izteikums RETURNING, ar kuru var izvadīt dzēsta, ievietota vai mainīta ieraksta saturu. Piemēram, izteikums „insert into … returning id” atgriezīs pievienotās rindas identifikatoru, bet „update … set price = price * 1.10 returning price” atgriezīs mainīto cenu vērtību.
- Izplatītām tabulu izteiksmēm (Common Table Expression, CTE), kas ļauj izmantot pagaidu nosauktos rezultātu kopumus, kas definēti ar operatoru WITH, ir atļauts izvēlēties režīmus „MATERIALIZED” un „NOT MATERIALIZED”. „MATERIALIZED” nozīmē, ka jautājuma rezultāts tiek kešots atsevišķā fiziskā tabulā, no kuras vēlāk tiek iegūti dati, bet „NOT MATERIALIZED” nozīmē, ka katrā pieejā uz izteiksmēm tiks veikti atkārtoti pieprasījumi. Sākotnēji SQLite pēc noklusējuma bija režīmā „NOT MATERIALIZED”, taču tagad CTE, kas tiek izmantoti vairāk nekā vienu reizi, ir mainīti uz „MATERIALIZED”.
- Samazināta atmiņas patēriņš VACUUM operācijas izpildē datubāzēs, kas ietver ļoti lielas vērtības ar TEXT vai BLOB tipiem.
- Veikts darbs pie optimizatora un vaicājumu plānotāja veiktspējas uzlabošanas:
- Pievienotas optimizācijas, izmantojot min un max funkcijas ar izteiksmi «IN».
- Paātrināta EXISTS operatora izpilde.
- Ieviesta apakšvaicījumu izvēršana no UNION ALL izteiksmēm, kas izmantotas JOIN sastāvā.
- Iespējots indekss izteiksmēm IS NOT NULL.
- Nodrošināta «x IS NULL» un «x IS NOT NULL» pārveidošana par FALSE vai TRUE kolonnām, kurām ir «NOT NULL» atzīme.
- Izlaista ārējo atslēgu pārbaude UPDATE, ja operācija nemaina kolonnas, kas saistītas ar ārējām atslēgām.
- Atļauts pārvietot WHERE blokus apakšvaicījumos, kas satur logu funkcijas, ja šie bloki ir ierobežoti pastāvīgo vērtību un izteiksmju kopiju izmantošanai no «PARTITION BY» blokiem, kas izmantoti logu funkcijās.
- Izmaiņas komandlīnijas saskarnē:
- Pievienota komanda «.filectrl data_version».
- Izmantojot komandas «.once» un «.output», pievienota atbalsts izvadīšanas pārsūtīšanai uz apstrādātāju, ko izsauc, izmantojot nosaukuma kanālus («|»).
- Komandā «.stats» pievienoti argumenti «stmt» un «vmstep» statistikas izvadīšanai par izteiksmēm un virtuālās mašīnas skaitītājiem.
Avots: opennet.lv
