SQLite 3.35 väljalase

Avaldatud on SQLite 3.35, kerge DBMS-i väljaanne, mis on loodud pistikprogrammide raamatukoguna. SQLite kood levitatakse avalikus omandis, st. saab kasutada piiranguteta ja tasuta igal eesmärgil. SQLite'i arendajatele pakub rahalist tuge spetsiaalselt loodud konsortsium, kuhu kuuluvad sellised ettevõtted nagu Adobe, Oracle, Mozilla, Bentley ja Bloomberg.

Peamised muudatused:

  • Lisatud on sisseehitatud matemaatilised funktsioonid (log2(), cos(), tg(), exp(), ln(), pow() jne), mida saab kasutada SQL-is. Sisseehitatud funktsioonide lubamiseks on vaja luua suvand "-DSQLITE_ENABLE_MATH_FUNCTIONS".
  • Rakendatud on avaldise „ALTER TABLE DROP COLUMN” tugi, et eemaldada tabelist veerud ja kustutada eelnevalt antud veerus salvestatud andmed.
  • Operatsiooni UPSERT (lisa või muuda) rakendamist on laiendatud, võimaldades selliste avaldiste kaudu nagu "INSERT ... ON CONFLICT DO NOTHING/UPDATE" tõrget ignoreerida või sisestamise asemel värskendada, kui seda pole võimalik lisada. andmed läbi "INSERT" (näiteks kui kirje on juba olemas, saate INSERTi asemel teha UPDATE). Uus versioon võimaldab määrata mitu ON CONFLICT plokki, mida töödeldakse järjekorras. Viimane plokk "ON CONFLICT" lubab konflikti määramise parameetri välja jätta, et kasutada "DO UPDATE".
  • Toimingud DELETE, INSERT ja UPDATE toetavad avaldist RETURNING, mida saab kasutada kustutatud, lisatud või muudetud kirje sisu kuvamiseks. Näiteks avaldis "insert into ... returning id" tagastab lisatud rea identifikaatori ja "värskenda ... määra hind = hind * 1.10 tagastav hind" tagastab muudetud hinna väärtuse.
  • Ühiste tabeliavaldiste (CTE) puhul, mis võimaldavad kasutada WITH-lausega määratud ajutisi nimega tulemuskomplekte, on režiimide “MATERIALIZED” ja “NOT MATERIALIZED” valik lubatud. „MATERIALIZED” tähendab vaates määratud päringu vahemällu salvestamist eraldi füüsilisse tabelisse ja seejärel andmete toomist sellest tabelist. „NOT MATERIALIZED” korral tehakse korduvad päringud iga kord, kui vaatele juurde pääsete. Algselt oli SQLite vaikeväärtus "NOT MATERIALIZED", kuid nüüd on rohkem kui üks kord kasutatud CTE-de jaoks muutunud väärtuseks "MATERIALIZED".
  • Vähendatud mälutarbimine VACUUM-toimingu tegemisel andmebaasides, mis sisaldavad väga suuri TEKSTI või BLOB väärtusi.
  • Optimeerija ja päringuplaneerija jõudluse suurendamiseks on tehtud tööd:
    • Lisatud optimeerimised funktsioonide min ja max kasutamisel koos "IN" avaldisega.
    • Avalduse EXISTS täitmine on kiirendatud.
    • Rakendatud alampäringute laiendamine UNION ALL avaldistest, mida kasutatakse JOIN osana.
    • Indeksit kasutatakse IS NOT NULL avaldiste jaoks.
    • Tagab, et "x IS NULL" ja "x IS NOT NULL" teisendatakse väärtuseks FALSE või TRUE veergude puhul, millel on atribuut "NOT NULL".
    • Kui toiming ei muuda võõrvõtmega seotud veerge, jätke võõrvõtmete kontrollimine rakenduses UPDATE vahele.
    • WHERE-i ploki osi on lubatud liigutada aknafunktsioone sisaldavatesse alampäringutesse, kui need osad piirduvad konstantide ja avaldiste koopiatega töötamisest aknafunktsioonides kasutatavatest plokkidest PARTITION BY.
  • Muudatused käsurea liideses:
    • Lisatud käsk ".filectrl data_version".
    • Käsud ".once" ja ".output" toetavad nüüd väljundi edastamist töötlejale, mida kutsutakse nimetamata torude ("|") abil.
    • Avaldiste ja virtuaalmasina loendurite statistika kuvamiseks on käsule ".stats" lisatud argumendid "stmt" ja "vmstep".

Allikas: opennet.ru

Lisa kommentaar